我有2种型号更新数据正确laravel
Tour.php
public function Itinerary()
{
return $this->hasMany('App\Itinerary', 'tour_id');
}
和
Itinerary.php
public function tour()
{
return $this->belongsTo('App\Tour', 'tour_id');
}
tours
表:
id|title|content
itineraries
表:
id|tour_id|day|plan
我的存储方法是这样的:
public function store(Request $request)
{
$tour = new Tour;
$tour->title = $request->title;
$tour->content = $request->content;
$tour->save();
$itineraries = [];
$day = $request->input('day');
$plan = $request->input('itinerary');
foreach ($day as $i => $name) {
$itineraries[] = new Itinerary([
'tour_id' => $tour->id,
'plan' => $plan[$i],
'day' => $day[$i],
]);
}
$tour->itinerary()->saveMany($itineraries);
Session::flash('success','Tour is sucessfully created !');
return redirect()->route('tour.show',$tour->id);
}
,并按照更新方法的代码:
public function update(Request $request, Tour $tour)
{
$tour->title = $request->title;
$tour->content = $request->content;
$tour->save();
$count = count($request->input('day'));
$temp_day = $request->input('day');
$temp_itinerary = $request->input('itinerary');
$tour_id = $tour->id;
$itinerary = Itinerary::where('tour_id', $tour_id);
for($i = 0; $i <$count; ++$i)
{
$itinerary->updateOrCreate([
'tour_id' => $tour_id,
'plan' => $temp_itinerary[$i],
'day' => $temp_day[$i]
]);
}
Session::flash('success','Tour updated sucessfully !');
return redirect()->route('tour.show',$tour->id);
}
我加入了额外的数据day3
& day4
但代码中创建新行数据day2
没有,但不是day1
后:
创建旅游和行程之后。自上周以来一直令我难以置信。我在这里丢失了什么,或者我应该在itineraries
表上使用不同的方法来进行CRUD操作。请建议。
它看起来像你有你的关系向后在你的模型。似乎是在引用他们自己。 – btl
感谢您指出错误。我纠正了它。错误只在这里。我一定很快就错过了。 –