Метод replicate () не найден в laravel 5.2

Я пытаюсь повторить строку таблицы и ее отношения.

но я получаю сообщение об ошибке, что replicate () не существует,

введите описание изображения здесь

Я видел на stackoverflow, что многие использовали replicate () без каких-либо проблем, но я получаю эту ошибку

мой код контроллера

 public function copyshowtime($cinema_id,$show_date)
{
$date=new Carbon($show_date);
$current_show_date=$date->format('Y-m-d');
$next_show_date=$date->addDay()->format('Y-m-d');

$movieshowtime=Movies_showtimes::with('showdata')->where([['cinema_id','=',$cinema_id],['show_date','=',$current_show_date]])->get();

$newshowtime=$movieshowtime->replicate();
return $newshowtime;}

Есть ли какое-либо пространство имен, которое я должен использовать для использования replicate (), я также не могу получить решение с веб-сайта laravel.

помощь приветствуется.

0

Решение

Ты можешь использовать replicate() на модели, но не на коллекции.

Получая ваши записи с помощью get() Вы возвращаете коллекцию.

Если вы ожидаете, что будет возвращена одна запись, замените get() с first() а потом replicate() должен существовать, так как он будет возвращать экземпляр модели, а не коллекцию:

public function copyshowtime($cinema_id,$show_date)
{
$date=new Carbon($show_date);
$current_show_date=$date->format('Y-m-d');
$next_show_date=$date->addDay()->format('Y-m-d');

$movieshowtime=Movies_showtimes::with('showdata')->where([['cinema_id','=',$cinema_id],['show_date','=',$current_show_date]])->first();

$newshowtime=$movieshowtime->replicate();
return $newshowtime;
}

Вам также нужно будет save() $newshowtime,

0

Другие решения

Этот код отлично сработал для меня

 public function copyshowtime($cinema_id,$show_date)
{
$date=new Carbon($show_date);
$current_show_date=$date->format('Y-m-d');
$next_show_date=$date->addDay()->format('Y-m-d');

$movieshowtime=Movies_showtimes::with('showdata')->where([['cinema_id','=',$cinema_id],['show_date','=',$current_show_date]])->get();

foreach ($movieshowtime as $item)
{
$item->show_date=$next_show_date;
$item->show_id=NULL;
$newshowtime=$item->replicate();
$newshowtime->push();foreach ($item->showdata as $sd)
{$newshowdata = array(
'showdata_id' => NULL,
'show_id'=>$newshowtime->id,
'category_id'=>$sd->category_id,
'showdata_category'=>$sd->showdata_category,
'showdata_rate'=>$sd->showdata_rate

);// print_r($newshowdata);
Movies_showdata::create($newshowdata);}
}

return redirect()->back();}

Будем благодарны за любые предложения по улучшению этого кода.

0

По вопросам рекламы [email protected]