我想更新数据库中的数据 我有控制器
public function update(Identity $identity, Request $request)
{
$data = new Identity();
$data->date = $request['date'];
$data->code = $request['code'];
$data->name = $request['name'];
$request->user()->identity()->update($data);
Session::flash('flash_message', 'Update success.');
return redirect('identity.index');
}
模型身份
public function user()
{
// Each data is owned by only one user
return $this->belongsTo('App\User');
}
模型用户
public function identity()
{
// Each user will have a lot of data
return $this->hasMany('App\Identity');
}
我发现了一个错误:传递给Illuminate \ Database \ Eloquent \ Relations \ HasOneOrMany :: update()的参数1必须是类型数组,给定对象。
答案 0 :(得分:1)
您已经拥有路径模型绑定的Identity模型。您可以执行以下操作之一。
public function update(Identity $identity, Request $request)
{
$identity->date = $request['date'];
$identity->code = $request['code'];
$identity->name = $request['name'];
$identity->save();
Session::flash('flash_message', 'Update success.');
return redirect('identity.index');
}
或(确保在模型中设置$ fillable属性以使其工作)
public function update(Identity $identity, Request $request)
{
$identity->update([
'date' => $request['date'],
'code' => $request['code'],
'name' => $request['name'],
]);
Session::flash('flash_message', 'Update success.');
return redirect('identity.index');
}
答案 1 :(得分:0)
这一行
$data = new Identity();
创建一个对象。在下面你要设置它的属性。相反,看起来您可以将属性直接传递给函数:
public function update(Identity $identity, Request $request)
{
$request->user()->identity()->update(array($request));
...
}
当然,您可能还希望将您的请求限制为所需的内容:
public function update(Identity $identity, Request $request)
{
$params = array_intersect_key(array($request), array_flip(['date', 'code', 'name']))
$request->user()->identity()->update($params);
...
}