我有两个模特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();
}
并成功地插入了records.And在tour.store
方法中应用的相同代码。它没有更新行,而是将新行插入到表中。什么是最好的解决办法呢?
发布于 2017-06-14 09:24:32
若要更新,请尝试使用以下代码
$itinerary = Itinerary::find($tour_id);
$itinerary->plan = $temp_itinerary[$i];
$itinerary->day = $temp_day[$i];
$itinerary->save();
发布于 2017-06-14 10:48:21
您使用的方式是插入/创建新记录。更新您可以使用。
Itinerary::find($tour_id)->update(
['column_name'=> value]
);
其中,find
方法获取表的主键。
这将更新您现有的记录。您可以根据需要更新任意多个列,只需传入数组update
即可。您还可以使用其他答案中提到的save
方法。
编辑
$iterneary = Itenerary::where('tour_id', $tour_id)->first();
现在,您可以将这个iterneary
对象更新为您想要的任何东西。
发布于 2017-06-22 08:59:07
我就是这么做的。首先,将所有的导游保存在$tours[]数组中。
foreach($tours as $tour) {
$itinerary->tour()->updateOrCreate(['id'=> $tour['id']],$tour);
}
updateOrCreate,因为您可能需要在更新时添加新的浏览。我知道这并不能确切地回答你的问题,但这至少可以给你一个想法。
https://stackoverflow.com/questions/44540484
复制相似问题