Laravel 拉威尔在哪里查询

Laravel 拉威尔在哪里查询,laravel,Laravel,我该如何处理拉威尔 SELECT movie.title FROM movie WHERE movie.id IN (SELECT session.movie_id FROM session WHERE session.id = :id and date = :date) 首先,您需要一个包含电影和会话表的数据库,以及Laravel中的两个模型 电影模型 首先,您需要一个包含电影和会话表的数据库,以及Laravel中的两个模型 电影模型 您可以使用laravel的: 您可以使用laravel的

我该如何处理拉威尔

SELECT movie.title
FROM movie
WHERE movie.id IN
(SELECT session.movie_id FROM session WHERE session.id = :id and date = :date)

首先,您需要一个包含电影和会话表的数据库,以及Laravel中的两个模型

电影模型


首先,您需要一个包含电影和会话表的数据库,以及Laravel中的两个模型

电影模型


您可以使用laravel的:


您可以使用laravel的:


无论您如何使用laravel ORM,它都会生成多个查询,我建议您首先在会话表中查询并获取列表,然后在电影模型中的WHERE查询中使用该结果

无论您如何使用laravel ORM,它都会生成多个查询,我建议您先在会话表中查询并获取列表,然后在电影模型中的WHERE查询中使用该结果

$query=select movie.title from movie where movie.id在select session.movie\u id from session where session.id='.$id.'和date='.$date.'

$resultSet=DB::选择$query


希望这有帮助。

$query=从电影中选择movie.title,其中movie.id位于select session.movie\u id来自session,其中session.id='.$id',date='.$date'

$query = "SELECT movie.title
    FROM movie
    WHERE movie.id IN
    (SELECT session.movie_id FROM session WHERE session.id = ? and date = ?)";

$movie = \DB::select($query, [$id, $date]);
$resultSet=DB::选择$query

希望这有帮助。

使用左连接。
$query = "SELECT movie.title
    FROM movie
    WHERE movie.id IN
    (SELECT session.movie_id FROM session WHERE session.id = ? and date = ?)";

$movie = \DB::select($query, [$id, $date]);
比如说,

$first=DB::session'movie.title'->leftjoin'session','session.movie_id','=','movie.id'->where'session.id','=',$id->where'session.date','=','$date'->获取

为了检查结果

dd优先

希望这有帮助。

使用左连接。
$query = "SELECT movie.title
    FROM movie
    WHERE movie.id IN
    (SELECT session.movie_id FROM session WHERE session.id = ? and date = ?)";

$movie = \DB::select($query, [$id, $date]);
比如说,

$first=DB::session'movie.title'->leftjoin'session','session.movie_id','=','movie.id'->where'session.id','=',$id->where'session.date','=','$date'->获取

为了检查结果

dd优先


希望这有帮助。

使用DB::raw运行raw查询

$query = "SELECT movie.title
    FROM movie
    WHERE movie.id IN
    (SELECT session.movie_id FROM session WHERE session.id = ? and date = ?)";

$movie = \DB::select($query, [$id, $date]);
$query=DB::selectDB::rawselect movie.title 从电影 电影id在哪里 从会话中选择session.movie_id,其中session.id=$id和date=$date


返回$query

使用DB::raw运行原始查询

$query=DB::selectDB::rawselect movie.title 从电影 电影id在哪里 从会话中选择session.movie_id,其中session.id=$id和date=$date


返回$query

对于优化的代码,使用左连接是一个很好的选择。否则,请检查以下说明

下面的代码行将生成获取电影id的查询。使用toSql方法将返回查询而不是结果

$movie_id_qry = DB::table('session')->select('session.movie_id')->whereRaw('session.id = '. $id .' && date = '. $date)->toSql();
可以包括此查询以获取电影标题:

$movie_title = DB::table('movies')->where('movie.id', '=', $movie_id_qry)->pluck('movie.title');
结果:echo$movie_title

如果找到匹配项,则Pulk方法将仅返回标题列。 要检索整行,请使用get方法而不是pull

由于toSql方法将只生成查询,因此组合的DB获取只发生在第二行代码中


希望这会有所帮助。

使用左连接是优化代码的一个好选择。否则,请检查以下说明

DB::table('movies')
  ->select(
    movies.title, 
    DB::raw(
      '(select session.movie_id from session where session.id = id AND date = date') as movie_id'
    )
  )->where('movies.id','movie_id')get();
下面的代码行将生成获取电影id的查询。使用toSql方法将返回查询而不是结果

$movie_id_qry = DB::table('session')->select('session.movie_id')->whereRaw('session.id = '. $id .' && date = '. $date)->toSql();
可以包括此查询以获取电影标题:

$movie_title = DB::table('movies')->where('movie.id', '=', $movie_id_qry)->pluck('movie.title');
结果:echo$movie_title

如果找到匹配项,则Pulk方法将仅返回标题列。 要检索整行,请使用get方法而不是pull

由于toSql方法将只生成查询,因此组合的DB获取只发生在第二行代码中


希望这会有所帮助。

@Mysteryos只是在谷歌上搜索,但我在这里没有找到任何yetStart:@Mysteryos只是在谷歌上搜索,但我在这里没有找到任何yetStart:
DB::table('movies')
  ->select(
    movies.title, 
    DB::raw(
      '(select session.movie_id from session where session.id = id AND date = date') as movie_id'
    )
  )->where('movies.id','movie_id')get();