我需要建議如何將數組存儲到數據庫。例如,我有一個輸入name="user_phone[]"
,我想存儲到數據庫的這個輸入的值。 我有一個表格,像這樣,也沒有其他的輸入,但只複製一個:將元素數組存儲到數據庫(Laravel)
{!! Form::open([route('some.router')]) !!}
<fieldset class="form-group">
{{ Form::label(null, 'Phone') }}
{{ Form::text('user_phone[]', null, ['class' => 'form-control']) }}
</fieldset>
{!! Form::close() !!}
和控制器:
public function postAddOrder(Request $request)
{
$this->validate($request, [
'receipt_date' => 'date|required',
'return_date' => 'date|required',
'user_name' => 'required',
'user_phone' => 'required',
'work_sum' => 'integer|required',
'user_descr' => 'required',
'foruser_descr' => 'required'
]);
$user = new User;
$user = $user->all()->find($request->input('user_name'));
$order = new Order([
'receipt_date' => $request->input('receipt_date'),
'return_date' => $request->input('return_date'),
'user_name' => $user->fio,
'user_phone' => $request->input('user_phone'),
'device' => $request->input('device'),
'work_sum' => $request->input('work_sum'),
'master_name' => $request->input('master_name'),
'user_descr' => $request->input('user_descr'),
'foruser_descr' => $request->input('foruser_descr'),
'type' => $request->input('type'),
'status' => $request->input('status'),
'engineer' => $request->input('engineer'),
'partner' => $request->input('partner'),
'office' => $request->input('office')
]);
$order->save();
return redirect()->route('admin.orders.index');
}
的問題是,當我提交表單,並得到錯誤:
htmlentities() expects parameter 1 to be string, array given
另外我使用強制轉換到存儲陣列以DB:
/**
* The attributes that should be casted to native types.
*
* @var array
*/
protected $casts = [
'user_phone' => 'array',
];
這些值正確存儲,主要問題是validate()方法不捕獲錯誤。例如,我不填寫需要的輸入中的一些數據。而不是讓喜歡的事的錯誤時,需要即時得到錯誤
htmlentities() expects parameter 1 to be string, array given
當IM用數據填充一切都輸入變爲確定。
您可以使用php的'implode'函數並將逗號分隔的值存儲到數據庫中.. – Jaimin