Я создаю приложение, в котором есть столбец данных, который я сериализирую для хранения в базе данных, потому что я не нашел другого способа сохранить данные как один объект. Моя форма, где данные вводятся, выглядит следующим образом.
<div class="form-group form-check col-sm-6">
</br>
<label for="careplan">Care Plan</label></br>
<input type ="checkbox" name="careplan[]" value="nursecallweekly"> Nurse call weekly</br>
<input type ="checkbox" name="careplan[]" value="nursecallbiweekly"> Nurse call bi-monthly</br>
<input type ="checkbox" name="careplan[]" value="nursecallmonthly"> Nurse call monthly</br>
<input type ="checkbox" name="careplan[]" value="weightcheckdaily"> Weight check daily</br>
<input type ="checkbox" name="careplan[]" value="weightcheckweekly"> Weight check weekly</br>
<input type ="checkbox" name="careplan[]" value="lowerextremity"> Lower extremity edema status</br>
<input type ="checkbox" name="careplan[]" value="dietaryreview"> Dietary review</br>
<input type ="checkbox" name="careplan[]" value="fluidintake"> Fluid intake review</br>
<input type ="checkbox" name="careplan[]" value="bloodpressure"> Blood pressure reading daily</br>
<input type ="checkbox" name="careplan[]" value="bloodpressureweekly"> Blood pressure reading weekly</br>
<input type ="checkbox" name="careplan[]" value="hypertensive"> Hypertensive symptoms check</br>
<input type ="checkbox" name="careplan[]" value="ptinrweekly"> PT/INR weekly review</br>
</div>
В плане обслуживания есть несколько пунктов, которые можно выбрать. Я сгруппировал их в массив и сериализовал массив, используя.
//Create new Patient information
$patient = new Patient;
$patient->first_name = $request->input('first_name');
$patient->last_name = $request->input('last_name');
$patient->dob = $request->input('dob');
$patient->contact_one = $request->input('contact_one');
$patient->contact_two = $request->input('contact_two');
$patient->care_giver_one = $request->input('care_giver_one');
$patient->care_giver_two = $request->input('care_giver_two');
$patient->enrollment_reason = $request->input('enrollment_reason');
$care_plan = $request->input('careplan');
$cp = serialize($care_plan);
$patient->careplan = $cp;
$patient->save();
Изображение сверху - это вид. Как видите, сериализованные данные возвращаются. Я просмотрел этот форум, и ни одно из опубликованных предложений не сработало.
десериализация данных в laravel
Эта страница даже близко не подходит к тому, что я пытаюсь сделать.
https://laravel.com/docs/5.8/eloquent-serialization#date -сериализация
Это было близко, но не поделились тем, что было сделано, что сработало, или я не понимаю, что сработало.
https://laracasts.com/discuss/channels/laravel/problem-to-unserialize-my-returned-value
ОБНОВЛЕНИЕ: РЕШЕНИЕ, КОТОРОЕ РАБОТАЛО ДЛЯ МЕНЯ
Я внес пару изменений, которые помогли, и я нахожусь на 98% пути туда.
Этот пост помог мне. Разделить строку в Laravel Framework
Я изменил эту строку с этой
$care_plan = $request->input('careplan');
На эту
$patient->careplan = json_encode($request->input('careplan'));
Это вернуло мне возврат из базы данных этого.
["nursecallweekly","nursecallbiweekly","nursecallmonthly"]
и я использовал этот вложенный l oop для разбора строки.
@foreach(explode('","', $patient->careplan) as $plan)
<li>{{$plan = Str::after($plan,'["')}}</li>
@endforeach
Что отображается вот так.
nursecallweekly
nursecallbiweekly
nursecallmonthly"]
Моя единственная проблема сейчас - это заключительная скобка.
Решение для задней скобки
@foreach(explode('","', $patient->careplan) as $plan)
@if(Str::contains($plan, '['))
<li>{{ Str::after($plan,'["') }}</li>
@else
<li>{{ Str::before($plan,'"]') }}</li>
@endif
@endforeach