[英]Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model,
[英]Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::update() must be of the type array, object given
我想更新我有控制器的數據庫中的數據
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必須為數組類型,即給定的對象。
您已經具有帶有路由模型綁定的身份模型。 您可以執行以下操作之一。
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');
}
這條線
$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);
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.