hasMany 关系中的 Laravel 更新记录

时间:2021-01-06 10:09:47

标签: php laravel eloquent

listing_agents 表具有结构:

Schema::create('listing_agents', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->integer('listing_id')->default('0');
    $table->integer('agent_id')->default('0');
    $table->integer('commission')->default('0');
    $table->timestamps();
});

我的模型是:

public function listing_agents()
{
    return $this->hasMany('App\ListingAgent', 'listing_id');
}

我的控制器是

public function update(Request $request, $id)
$data = $request->all();
$listing = Listing::find($id);
$listing->update($data);
$agents = $request->agents;
$item = [];
$item['listing_id'] = $listing->id;
$item['agent_id'] = [];
foreach($agents as $agent) {
    array_push($item['agent_id'], $agent["key"]);
}

if($listing) {
    $listing->listing_agents()->update($item['agent_id']);
}

我收到以下错误:

"SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: update `listing_agents` set `0` = 78, `1` = 84, `listing_agents`.`updated_at` = 2021-01-06 01:59:50 where `listing_agents`.`listing_id` = 60 and `listing_agents`.`listing_id` is not null)"

如果我把上面改成:

foreach($agents as $agent) {
//array_push($item['agent_id'], $agent["key"]);
    $listing->listing_agents()->update(['agent_id' => $item['agent_id']]);
}

这不会更新任何记录。我想用一个像我插入的雄辩的查询来更新记录。 $listing = Listing::create($data);$listing->listing_agents()->createMany($agents);

这是我的数据库记录的样子: https://ibb.co/c24mqgR

1 个答案:

答案 0 :(得分:0)

现在我正在使用这种方式更新记录。

function Arrondis() {
  
  const ss = SpreadsheetApp.getActive();
  const firstSheet = ss.getSheets()[0];
  ss.setActiveSheet(firstSheet);
  var cellRange = ss.getCurrentCell();
  
  var selectedColumn = cellRange.getColumn();
  var selectedRow = cellRange.getRow();
  
  var secondSheet = ss.getSheets()[1];
  var secondColumn = selectedColumn-1;
  var secondRow = selectedRow-26;

  Logger.log("FEUILLE 1 : "+firstSheet.getName());
  Logger.log("FEUILLE 2 : "+secondSheet.getName());
  Logger.log("ROW :"+selectedRow+" / COLUMN :"+selectedColumn+" / VALUE :"+cellRange.getValue());
  Logger.log("ROW :"+secondRow+"  COLUMN :"+secondColumn);
}

我不接受这个答案。如果您可以发布比这更好的答案,请发布您的答案,以便我可以将其标记为已接受的答案。