Я пытаюсь повторить строку таблицы и ее отношения.
но я получаю сообщение об ошибке, что 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.
помощь приветствуется.
Ты можешь использовать 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
,
Этот код отлично сработал для меня
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();}
Будем благодарны за любые предложения по улучшению этого кода.