2016-11-03 4 views
0

Im копируя таблицу поездок. В форме поездки есть выпадающий список для выбора видов. Пользователь может выбрать многие виды. У меня возникли проблемы с тиражированием этой таблицы видов, которые вызывают ее в своей таблице и ее коллекции. Поэтому использование «replicate» не работает.Репликация Коллекция Laravel - Laravel 5.3

Это как Im тиражирования стола экскурсии на прямо сейчас:

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

} 

Если я DD переменный $ replicateSpecies при клонировании моей текущей поездки, я получаю:

My Collection

мне нужен повторите массив видов из моего первоначального путешествия в таблицу видов, и я не могу просто использовать «репликацию», потому что это коллекция.

Итак, мой вопрос в том, как бы я реплицировал эту коллекцию? Или, если есть другой способ сделать это?

ответ

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

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

}