Как отобразить данные массива из MySql в laravel

Так что я манифест, где вы можете добавить несколько клиентов, производить и т. Д., И он сохраняет в БД в виде массива

введите описание изображения здесь

Сейчас я делаю страницу, где вы можете просмотреть всю информацию о манифесте, я хочу, чтобы она выглядела примерно так

введите описание изображения здесь

если я попытаюсь сделать что-то подобное {{ $manifest->customer_name }} я получаю ошибку htmlspecialchars() expects parameter 1 to be string, array given потому что это массив, у меня только проблемы с отображением данных массива

Код контроллера для получения правильного манифеста

public function view($id) {

$manifests = Manifest::where('id', $id)->where('user_id', Auth::user()->id)->firstOrFail();

return view('users.manifest.view', compact('manifests'));
}

вид — обычно я бы просто поставил {{ $manifets->customer_name }} но я не могу, потому что это массив

<table class="table table-striped">
<thead>
<tr>
<th width="15%">Customer</th>
<th width="15%">Produce</th>
<th width="15%">Task</th>
<th width="15%">Units</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="text" class="form-control" value="{{ $manifests->customer_name }}" />
</td>
</tr>
</tbody>
</table>

print_r

 App\Manifest Object
(
[table:protected] => manifest
[fillable:protected] => Array
(
[0] => user_id
[1] => date
[2] => driver_name
[3] => truck_number
[4] => run_number
[5] => customer_name
[6] => produce
[7] => task
[8] => units
)

[casts:protected] => Array
(
[customer_name] => array
[produce] => array
[task] => array
[units] => array
)

[connection:protected] => mysql
[primaryKey:protected] => id
[keyType:protected] => int
[incrementing] => 1
[with:protected] => Array
(
)

[withCount:protected] => Array
(
)

[perPage:protected] => 15
[exists] => 1
[wasRecentlyCreated] =>
[attributes:protected] => Array
(
[id] => 8
[user_id] => 1
[date] => 2017-11-02
[driver_name] => Harry Oberlander
[truck_number] => 7989
[run_number] => 8
[customer_name] => ["evergreen","Surplus"]
[produce] => ["Apples","Meat"]
[task] => ["Pick Up","Delivery"]
[units] => ["3 skids","1"]
[created_at] => 2017-11-02 04:49:49
[updated_at] => 2017-11-02 04:49:49
)

[original:protected] => Array
(
[id] => 8
[user_id] => 1
[date] => 2017-11-02
[driver_name] => Harry Oberlander
[truck_number] => 7989
[run_number] => 8
[customer_name] => ["evergreen","Surplus"]
[produce] => ["Apples","Meat"]
[task] => ["Pick Up","Delivery"]
[units] => ["3 skids","1"]
[created_at] => 2017-11-02 04:49:49
[updated_at] => 2017-11-02 04:49:49
)

[dates:protected] => Array
(
)

[dateFormat:protected] =>
[appends:protected] => Array
(
)

[events:protected] => Array
(
)

[observables:protected] => Array
(
)

[relations:protected] => Array
(
)

[touches:protected] => Array
(
)

[timestamps] => 1
[hidden:protected] => Array
(
)

[visible:protected] => Array
(
)

[guarded:protected] => Array
(
[0] => *
)

)

вот обновленный код

    @foreach($manifests as $manifest)
<tr>
<td>
<input type="text" class="form-control" value="{{ $manifest['customer_name'] }}" />
</td>
<td>
<input type="text" class="form-control" value="{{ $manifest['produce'] }}" />
</td>
<td>
<input type="text" class="form-control" value="{{ $manifest['task'] }}" />
</td>
</tr>
@endforeach

-1

Решение

Проблема в том, что вы храните массив (который является объектом в PHP) в базе данных.
Это делает форму неузнаваемой при извлечении данных.

Вы должны сериализовать массив перед сохранением его в базе данных. Это сохранит данные в виде строки JSON.

serialize($array_var_name);

Далее, чтобы вернуть массив, вы можете использовать

десериализации ($ data_var);

Теперь вы можете использовать массив как обычный массив

0

Другие решения

Вы можете сделать что-то вроде этого:

@foreach($manifets as $manifestos)
@for ($counter = 0; $counter < sizeof($manifestos['customer_name']); $counter++)
<tr>
<td>

<input type="text" class="form-control" name="nameoffield" value="{{ $manifestos['customer_name'][$counter] }}" />
</td>
<td>

<input type="text" class="form-control" name="nameoffield" value="{{ $manifestos['otherfields'][$counter]}}" />
</td>
//more td here depending on the fields you want to display
</tr>
@endfor
@endforeach
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector