2016-09-22 36 views
0

テーブル行とその関係をレプリケートしようとしています。laravel 5.2でreplicate()メソッドが見つかりません

が、私は(複製エラーメッセージを取得していますが)、

enter image description here

存在しません。私は多くの人がどんな問題なく複製()を使用していることstackoverflowの上で見てきましたが、私はこのエラーを取得しています

私のコントローラのコードは

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; 


} 

i)が(複製使用のために使用する必要が任意の名前空間があり、私が取得することができません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()、その後replicate()get()を交換後、返送される1つのレコードを期待している場合、それはモデルのインスタンスではなく、コレクションを返すされるように存在している必要があります:

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

関連する問題