【问题标题】:Replicate table, to 3 other tables, while updating the trip_id column - Laravel 5.3将表复制到其他 3 个表,同时更新 trip_id 列 - Laravel 5.3
【发布时间】:2017-03-17 02:47:00
【问题描述】:

这是一个棘手的问题。我会尽力解释它。我有一次旅行,我希望用户在该旅行上单击复制按钮,这将再次复制该旅行,因此用户不必再次填写巨大的表格。

行程表保存为 4 个模型(表格)。

这就是我现在进行复制的方式:

 public function replicateTrip (Request $request, $slug, $id) {

        $listing = $request->user()->listings()->where('slug', $slug)->first();
        $trip = $listing->trips()->where('id', $id)->first();


        $replicateTrip = Trip::find($trip->id);
        $replicatebringToTrip = BringToTrip::where('trip_id', $id)->first();
        $replicateIncludedInPriceForTrip = IncludedPriceTrip::where('trip_id', $id)->first();
        $replicateNotIncludedInPriceForTrip = NotIncludedPriceTrip::where('trip_id', $id)->first();

        $newTask = $replicateTrip->replicate();
        $newTask2 = $replicatebringToTrip->replicate();
        $newTask3 = $replicateIncludedInPriceForTrip->replicate();
        $newTask4 = $replicateNotIncludedInPriceForTrip->replicate();

        $newTask->save();
        $newTask2->save();
        $newTask3->save();
        $newTask4->save();

        return redirect()->back();

    }

这就是主行程表上复制行程的样子:

然后我得到了 3 个其他不同的模型(表),它保存了来自该旅行 ID 的数据。

例如,这是我将数据复制到的另一个表:

如您所见,数据已成功复制,但“trip_id”列(在本例中为 1259)仍与我复制的原始行程相同。我需要获取新复制的trip_id,并将其插入到我拥有的其他3 个模型中。所以在这种情况下,第二行将是 1262 而不是 1259。

【问题讨论】:

    标签: laravel model replication laravel-5.3 relationships


    【解决方案1】:

    你可以试试:

    public function replicateTrip (Request $request, $slug, $id) {
    
        $listing = $request->user()->listings()->where('slug', $slug)->first();
        $trip = $listing->trips()->where('id', $id)->first();
    
    
        $replicateTrip = Trip::find($trip->id);
        $replicatebringToTrip = BringToTrip::where('trip_id', $id)->first();
        $replicateIncludedInPriceForTrip = IncludedPriceTrip::where('trip_id', $id)->first();
        $replicateNotIncludedInPriceForTrip = NotIncludedPriceTrip::where('trip_id', $id)->first();
    
        $newTask = $replicateTrip->replicate();
        $newTask2 = $replicatebringToTrip->replicate();
        $newTask3 = $replicateIncludedInPriceForTrip->replicate();
        $newTask4 = $replicateNotIncludedInPriceForTrip->replicate();
    
        $newTask->save();
    
        $newTask2->trip_id = $newTask->id;
        $newTask3->trip_id = $newTask->id;
        $newTask4->trip_id = $newTask->id;
    
        $newTask2->save();
        $newTask3->save();
        $newTask4->save();
    
        return redirect()->back();
    
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-30
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      相关资源
      最近更新 更多