2016-10-12 7 views
3

私は3者関係クエリを持っています。私は映画も持っている映画のためのセッションをしたいです。Laravel複数行のデータを取得する

パラメータに渡された$ idとしてムービーIDにアクセスできます。私はその映画のIDを持っている映画館を見つけたい。ここで

は私のコントローラです:

public function ticketpage($id) 
{ 
    $movie = Movie::find($id); 
    $cinemas = Cinema::all(); 
    $sessions = Session::all(); 
    $query = Session::where('movie_id', "$id")->get(); 
    $count = count($query)-1; 


    $cinemaId = $query[$count]['cinema_id']; 
    $cinemaRow = Cinema::where('id', "$cinemaId")->get(); 

    return view('movies/ticketpage/index') 
     ->with('cinemas', $cinemas) 
     ->with('sessions', $sessions) 
     ->with('movie', $movie) 
     ->with('cinemaRow', $cinemaRow); 
} 

あなたが見ることができるように私は、そのセッションのすべての行を取得するために私の$クエリ(その映画のIDを持つすべてのセッションを取得)を使用することができますどのように本当にわからないんだけどその映画のIDを持っている。

私は$ query [count] ['cinema_id]を使用しましたが、最後の行の値である1つの値しか返しません。私はすべての行の値を返すようにします。私はforループを使ってみましたが、あまり成功しませんでした。

ありがとうございました!

答えて

0

はこれを試してみてください。

public function ticketpage($id) 
{ 
$movie = Movie::find($id); 
$cinemas = Cinema::all(); 
$sessions = Session::all(); 
$query = Session::select('cinema_id')->where('movie_id', $id)->get(); 
//$count = count($query)-1; 


//$cinemaId = $query[$count]['cinema_id']; 
//$cinemaRow = Cinema::where('id', $cinemaId)->get(); 
$cinemaRow = Cinema::whereIn('id', $query)->get(); 

return view('movies/ticketpage/index', compact('cinemas', 'sessions', 'movie', 'cinemaRow')); 

// No need for all the 'withs' 
//return view('movies/ticketpage/index') 
// ->with('cinemas', $cinemas) 
// ->with('sessions', $sessions) 
// ->with('movie', $movie) 
// ->with('cinemaRow', $cinemaRow); 
} 
0

はあなたのコードでこれらの2を交換し、それが動作するはずですしてみてください:すべての

$query = Session::select('cinema_id')->whereMovie_id($id)->get(); 
$cinemaWithSession = Cinema::whereId($query)->get(); 
0

まず、私は次のスキーマとの関係が設定されていると仮定します。

| Movie | Cinema | Session | 
| ----- | ------ | --------- | 
| id | id  | id  | 
|  |  | cinema_id | 
|  |  | movie_id | 

これは私があなたの声明に基づいてそのmovie_idしてムービーを再生している映画館を取得する方法です。

$ idはパラメータに渡されたとして、私は映画のIDへのアクセスを持っています。私はその映画のIDを持っている映画館を見つけたい。

public function ticketpage($id) 
{ 
    // Get all Cinema which has the Session with the Movie.id 
    $cinemas = Cinema::whereHas('sessions', function ($query) use ($id) { 
     $query->where('movie_id', $movie_id); 
    })->get(); 

    return view('movies/ticketpage/index', [ 
     'cinemas' => $cinemas 
    ]); 
} 
+0

あなたは映画内映画のすべてのセッションをしたい場合は、それができます代わりにSessionとwith( 'cinema')をフェッチして実行することもできます。私に知らせて、私は答えを更新することができます。 – Mosufy

0

あなたはmovie idを持っていて、このクエリを使用して映画館を検索することができcinemasテーブル内movie_id列がある場合:

public function ticketpage($id) 
{ 
    $cinemas = Cinema::where('movie_id',$id)->get(); 
    return view('movies.ticketpage.index',compact('cinemas')); 
} 
関連する問題