Laravel。对两个表的雄辩查询

时间:2015-06-09 14:27:01

标签: php mysql sql laravel eloquent


我想编写laravel eloquent查询,它可以从titles表中选择所有标题,其中title_id不存在于title_count表中。这是一个例子。

标题表:

title_id
    1
    2
    3
    4

title_count表:

title_id 
    3
    4

所以我的查询应该从标题表中选择id为1,2的标题。说实话,我不知道怎么做。我正在使用laravel 5.
我希望你能帮助我。提前致谢!

3 个答案:

答案 0 :(得分:1)

使用联接来识别未出现在title_count中的标题。

DB::table('titles')->leftJoin('title_count', 'titles.title_id', '=', 'title_count.title_id')
                   ->select('titles.*')
                   ->whereNull('title_count.title_id')
                   ->get();

答案 1 :(得分:0)

试试这个

DB::table('titles')->whereNotExists(function($query)
{
    $query->select(DB::raw(1))
       ->from('title_count')
       ->whereRaw('title_count.title_id = titles.title_id');
})->get();

答案 2 :(得分:0)

未经测试

DB::table('title_count')
  ->leftJoin('titles as t', 't.title_id', '=', 'title_count.title_id')
  ->select('t.*')
  ->where('t.title_id', '!=', 'title_count.title_id')
  ->get();