将 table 复制到其他 3 个 table,同时更新 trip_id 列 - Laravel 5.3

Replicate table, to 3 other tables, while updating the trip_id column - Laravel 5.3

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

旅行表格保存到 4 个模型(tables)。

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

 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();

    }

这就是复制的行程在主要行程中的样子 table:

然后我得到了其他 3 个不同的模型 (tables),它将数据保存到该行程 ID。

例如,这里是我的另一个 table,数据被复制到:

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

您可以试试:

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();

}