我有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
感謝您指出錯誤。我糾正了它。錯誤只在這裏。我一定很快就錯過了。 –