簡體   English   中英

傳遞給Illuminate \\ Database \\ Eloquent \\ Relations \\ HasOneOrMany :: update()的參數1必須為數組類型,給定對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM