お世話になっております。
現在フロント側をvueでバック側をlaravelで開発しているのですが、そこでタイトルのapiの作り方が分からなくて困っています。
今使っているapiが下記のものでこれを改善してpaginationにしてリターンしたいのですがどうすれば良いのでしょうか?(最初のwhereのところと$tag->moviesのところにpaginate()を入れてみたのですが500エラーが返ってきてしまいます)
よろしくお願いいたします。
laravelphp
1 public function searchByTitle(Request $request){ 2 $movies = Movie::where('title','like',"%$request->title%")->orderBy('created_at','desc')->get(); 3 $tag = Tag::where('tag_name',$request->title)->first(); 4 if($tag){ 5 $tag_movie = $tag->movies; 6 $result = $tag_movie->union($movies); 7 }else{ 8 $result = $movies; 9 } 10 if($result->isEmpty()){ 11 return response()->json(['message'=>"empty"]); 12 }else{ 13 return response()->json(['message'=>'is exist','data'=>$result]); 14 } 15 }
どこにunion使いたいんでしょうかね?
わかり難くてすいません。
上記のコードの$moviesと$tagのbelongsToで取得したMovieのコレクション($tag_movie)をunionした$resultを返したいです。
ここまでは正常に動作してるのは確認しています。
そしてこの$resultをpaginate()の形で返したいです。
union って SQLのUNION句のことを言っているわけではないのですね?
そうですね。
sqlではなくlaravelが提供している同じ構造をしているコレクションを結合するのに使う方のunionです。
要件を推測する限り、union を使うというのは悪手ですが、union を使うというのは必須条件ですか?
いえ、moviesとtag_movieを1つのデータにまとめてそれを表示し、表示するデータ数が大きい場合ページネーションを実装できれば良いので必須ではありません。
しかし自分でページネーションを実装したことがなく…他にどういった方法がいいのでしょうか?
回答1件
あなたの回答
tips
プレビュー