复制 Laravel 集合 - Laravel 5.3

Replicate Laravel collection - Laravel 5.3

我正在复制一个行程 table。在行程表上,有一个 select 物种的下拉菜单。一个用户可以select很多种来。我在复制这个物种 table 时遇到了麻烦,因为它有自己的 table,而且它是一个集合。所以使用 "replicate" 是行不通的。

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

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);
        // This is how im getting the species from the species table
        $replicateSpecies = DB::table('species_trip')->where('trip_id', $id)->get();

        $newTask = $replicateTrip->replicate();

        $newTask->save();

        return redirect()->back();

}

如果我在克隆当前行程时添加 $replicateSpecies 变量,我得到:

我需要将我最初旅行中的物种数组复制到物种 table 中,我不能只使用 "replicate",因为它是一个集合。

所以我的问题是如何复制这个集合?或者是否有其他方法可以做到这一点?

你可以试试:

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

    // This is how im getting the species from the species table
    $replicateSpecies = DB::table('species_trip')->where('trip_id', $id)->get();

    $newTask = $replicateTrip->replicate();

    $newTask->save();

    $replicateSpecies->each(function ($item, $key) use($newTask) {
        $copy = $item->replicate();
        $copy->trip_id = $newTask->id;
        $copy->save();
    })

    return redirect()->back();

}