2016-09-22 3 views
0

테이블 행과 그 관계를 복제하려고합니다.replicate() 메소드가 laravel 5.2에 없습니다.

하지만 존재하지 않는 (복제 오류 메시지)를 얻고, 나는 많은 사람들이 어떤 문제없이 복제()를 사용하는 것을 유래에 본

enter image description here

,하지만 난이 오류

무엇입니까

내 컨트롤러 코드는

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; 


} 

내가) (복제 사용에 사용할 가지고있는 네임 스페이스가 있는가, 내가 얻을 수 없습니다입니다 또한 laravel 웹 사이트의 솔루션입니다.

도움을 받으실 수 있습니다.

+0

dd ($ movieshowtime)를하는 경우 컬렉션을 반환합니까? –

답변

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

모델에는 replicate()을 사용할 수 있지만 컬렉션에는 사용할 수 없습니다.

get()을 사용하여 레코드를 가져 오면 콜렉션이 반환됩니다. 당신은 단지 하나 개의 레코드를 기대하는 경우

first()get()를 교체 한 후 반환하고 오히려 모음보다 모델의 인스턴스를 반환 될 것이다 다음 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

컬렉션을 복제하려고하므로 복제가 작동하지 않습니다. 그런 다음 테이블의 모든 행을 복사하여 테이블에 다시 삽입하는 완전한 코드를 작성하는 것이 더 낫습니다. 아니면 다른 것이 있습니까? Rolf가 그렇게 할 수 있다고 제안 할 때 – dollar

+0

foreach ($ collection을 $ item) {$ newItem = $ item-> replicate()} –

+0

@ dollar. 실제로 당신이 그것을 할 수있는 몇 가지 방법이 있습니다, 당신이 복제 한 후에 당신이 확실히 저장하도록하십시오! – James

관련 문제