我有2个型号 Tour.php
public function Itinerary()
{
return $this->hasMany('App\Itinerary', 'tour_id');
}
和
Itinerary.php
public function tour()
{
return $this->belongsTo('App\Tour', 'tour_id');
}
游览表:
id|title|content
行程表:
id|tour_id|day|itinerary
我已经使用vue js来创建或添加和删除日期的输入字段并动态计划。并使用tour.store
方法中的以下代码插入itineraries
表:
$count = count($request->input('day'));
$temp_day = $request->input('day');
$temp_itinerary = $request->input('itinerary');
for($i = 0; $i < $count; ++$i)
{
$itinerary = new Itinerary;
$itinerary->tour_id = $tour->id;
$itinerary->plan = $temp_itinerary[$i];
$itinerary->day = $temp_day[$i];
$itinerary->save();
}
并且成功插入了记录。并在tour.store
方法中应用了相同的代码。它不是更新行,而是向表中插入新行。对此最好的解决方案是什么?
答案 0 :(得分:2)
对于更新,请尝试此代码
G
答案 1 :(得分:0)
您使用的方式是插入/创建新记录。要更新,您可以使用。
Itinerary::find($tour_id)->update(
['column_name'=> value]
);
其中find
方法采用表的主键。
这将更新您现有的记录。您可以根据需要更新任意数量的列,只需传入数组update
。您也可以使用其他答案中提到的save
方法。
修改强>
$iterneary = Itenerary::where('tour_id', $tour_id)->first();
现在,您可以将此iterneary
对象更新为您想要的任何内容。
答案 2 :(得分:0)
这就是我做到的。首先保存了$ tours []数组中的所有游览。
foreach($tours as $tour) {
$itinerary->tour()->updateOrCreate(['id'=> $tour['id']],$tour);
}
updateOrCreate,因为您可能需要在更新时添加新的游览。我知道这并没有完全回答你的问题,但这至少可以给你一个想法。