在Laravel查询构建器中运行"exists"查询

Ant*_*ond 2 query-builder laravel laravel-4

我正在使用MySQL并拥有一个包含900万行的表,并希望快速检查是否存在记录(id).

根据一些研究,似乎最快的方法是以下sql:

SELECT EXISTS(SELECT 1 FROM table1 WHERE id = 100)

来源:测试MySQL表中是否存在行的最佳方法

如何使用Laravel的查询构建器编写此代码?

小智 6

请参阅此处http://laravel.com/docs/4.2/queries

向下滚动到 Exists statements,您将得到您需要的内容

DB::table('users')
->whereExists(function($query)
{
    $query->select(DB::raw(1))
          ->from('table1')
          ->whereRaw("id = '100'");
})
->get();
Run Code Online (Sandbox Code Playgroud)

  • 不,此示例生成查询:`select * from users where isn't ( select 1 fromorders whereorders.user_id = users.id )`问题是关于不同的查询:`SELECT EXISTS(SELECT 1 FROM table1 WHERE id = 100) ` (注意 `select ... where contains` 和 `select issues` 之间的区别) (2认同)

Jar*_*zyk 5

使用类的selectOne方法Connection:

$resultObj = DB::selectOne('select exists(select 1 from your_table where id=some_id) as `exists`');

$resultObj->exists; //  0 / 1;
Run Code Online (Sandbox Code Playgroud)