Abby
Abby

Reputation: 71

How to store and retrieve associative array from database Laravel

I am trying to store Stat and End time for each Day. These Select elements refer to 'Start Time' and 'Ending Time' I am able to get the values but I am not sure how to store and retrieve them in my view. I am storing them by combining both arrays with the days separately and then json_encode but I am not able to retrieve them.

Store Blade View

<div class="form-check">
                                            <input class="form-check-input" type="checkbox" name="days[]" value="Monday" id="flexCheckDefault">
                                            <label class="form-check-label" for="flexCheckDefault">
                                                Monday
                                            </label>

                                            <div class="reveal-if-active">
                                                <div class="row">
                                                    <div class="col-md-4">
                                                        <label for="which-dog">From</label>
                                                        <select name="from[]" class="form-control">
                                                            <option value="1">01:00</option>
                                                            <option value="2">02:00</option>
                                                            <option value="3">03:00</option>
                                                            <option value="4">04:00</option>
                                                            <option value="5">05:00</option>
                                                            <option value="6">06:00</option>
                                                            <option value="7">07:00</option>
                                                            <option value="8">08:00</option>
                                                            <option value="9">09:00</option>
                                                            <option value="10">10:00</option>
                                                            <option value="11">11:00</option>
                                                            <option value="12">12:00</option>
                                                            <option value="13">13:00</option>
                                                            <option value="14">14:00</option>
                                                            <option value="15">15:00</option>
                                                            <option value="16">16:00</option>
                                                            <option value="17">17:00</option>
                                                            <option value="18">18:00</option>
                                                            <option value="19">19:00</option>
                                                            <option value="20">20:00</option>
                                                            <option value="21">21:00</option>
                                                            <option value="22">22:00</option>
                                                            <option value="23">23:00</option>
                                                            <option value="24">24:00</option>
                                                        </select>
                                                    </div>
                                                    <div class="col-md-4">
                                                        <label for="which-dog">To</label>
                                                        <select name="to[]" class="form-control">
                                                            <option value="1">01:00</option>
                                                            <option value="2">02:00</option>
                                                            <option value="3">03:00</option>
                                                            <option value="4">04:00</option>
                                                            <option value="5">05:00</option>
                                                            <option value="6">06:00</option>
                                                            <option value="7">07:00</option>
                                                            <option value="8">08:00</option>
                                                            <option value="9">09:00</option>
                                                            <option value="10">10:00</option>
                                                            <option value="11">11:00</option>
                                                            <option value="12">12:00</option>
                                                            <option value="13">13:00</option>
                                                            <option value="14">14:00</option>
                                                            <option value="15">15:00</option>
                                                            <option value="16">16:00</option>
                                                            <option value="17">17:00</option>
                                                            <option value="18">18:00</option>
                                                            <option value="19">19:00</option>
                                                            <option value="20">20:00</option>
                                                            <option value="21">21:00</option>
                                                            <option value="22">22:00</option>
                                                            <option value="23">23:00</option>
                                                            <option value="24">24:00</option>
                                                        </select>
                                                    </div>
                                                </div>
                                            </div>

                                        </div>
                                        <div class="form-check">
                                            <input class="form-check-input" type="checkbox" name="days[]" value="Tuesday" id="flexCheckChecked">
                                            <label class="form-check-label" for="flexCheckChecked">
                                                Tuesday
                                            </label>

                                            <div class="reveal-if-active">
                                                <div class="row">
                                                    <div class="col-md-4">
                                                        <label for="which-dog">From</label>
                                                        <select name="from[]" class="form-control">
                                                            <option value="1">01:00</option>
                                                            <option value="2">02:00</option>
                                                            <option value="3">03:00</option>
                                                            <option value="4">04:00</option>
                                                            <option value="5">05:00</option>
                                                            <option value="6">06:00</option>
                                                            <option value="7">07:00</option>
                                                            <option value="8">08:00</option>
                                                            <option value="9">09:00</option>
                                                            <option value="10">10:00</option>
                                                            <option value="11">11:00</option>
                                                            <option value="12">12:00</option>
                                                            <option value="13">13:00</option>
                                                            <option value="14">14:00</option>
                                                            <option value="15">15:00</option>
                                                            <option value="16">16:00</option>
                                                            <option value="17">17:00</option>
                                                            <option value="18">18:00</option>
                                                            <option value="19">19:00</option>
                                                            <option value="20">20:00</option>
                                                            <option value="21">21:00</option>
                                                            <option value="22">22:00</option>
                                                            <option value="23">23:00</option>
                                                            <option value="24">24:00</option>
                                                        </select>
                                                    </div>
                                                    <div class="col-md-3">
                                                        <label for="which-dog">To</label>
                                                        <select name="to[]" class="form-control">
                                                            <option value="1">01:00</option>
                                                            <option value="2">02:00</option>
                                                            <option value="3">03:00</option>
                                                            <option value="4">04:00</option>
                                                            <option value="5">05:00</option>
                                                            <option value="6">06:00</option>
                                                            <option value="7">07:00</option>
                                                            <option value="8">08:00</option>
                                                            <option value="9">09:00</option>
                                                            <option value="10">10:00</option>
                                                            <option value="11">11:00</option>
                                                            <option value="12">12:00</option>
                                                            <option value="13">13:00</option>
                                                            <option value="14">14:00</option>
                                                            <option value="15">15:00</option>
                                                            <option value="16">16:00</option>
                                                            <option value="17">17:00</option>
                                                            <option value="18">18:00</option>
                                                            <option value="19">19:00</option>
                                                            <option value="20">20:00</option>
                                                            <option value="21">21:00</option>
                                                            <option value="22">22:00</option>
                                                            <option value="23">23:00</option>
                                                            <option value="24">24:00</option>
                                                        </select>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>

controller

**ADD FUNCTION**

$from = json_encode(array_combine($request->days, $request->from));
$to = json_encode(array_combine($request->days, $request->to));

$business->hrs_from = $from;
$business->hrs_to = $to;

**EDIT FUNCTION**

dd((json_decode($businesses[0]->hrs_from)));

Response From Dump Die

{#1130 ▼
  +"Monday": "1"
  +"Tuesday": "1"
  +"Thursday": "1"
  +"Wednesday": "1"
}

Upvotes: 1

Views: 423

Answers (2)

alprnkeskekoglu
alprnkeskekoglu

Reputation: 318

Add second parameter to json_decode to get array

dd((json_decode($businesses[0]->hrs_from, true)));

Upvotes: 2

nathan hayfield
nathan hayfield

Reputation: 2685

You can use nested arrays in html form input names. For example:

from[day][]
from[time][]

or even:

from[day][0][]
from[time][0][]
from[day][1][]
from[time][1][]

It should arrive correctly on the backend. Not sure if this helps?

I have found it especially useful with php code that has a lot of data and especially in tables.

Upvotes: 1

Related Questions