【发布时间】:2016-11-01 10:58:29
【问题描述】:
我有一个这样的查询:
$query = "Select EXISTS(SELECT * FROM grp_user AS pivot JOIN groups
AS g ON pivot.grp_id = g.id JOIN vote ON g.id = vote.grp_id WHERE
pivot.grp_id = :grp_id AND pivot.user_id = :user_id)";
我想运行它。所以我尝试了:
$res = DB::select($query,array("grp_id"=>250,"user_id"=>1));
res 理想情况下应该有一个布尔值,但它有一个类似的数组:
[{"EXISTS(SELECT * FROM grp_user AS pivot JOIN groups AS g ON pivot.grp_id = g.id JOIN vote ON g.id = vote.grp_id WHERE pivot.grp_id = ? AND pivot.user_id = ?)":1}]
注意最后的 1,这是我感兴趣的值(它的 1 或 0)。
我怎样才能完成这项工作,或者以“laravel”的方式实现这一点?
【问题讨论】:
-
它还是
Builder对象吗?dd($res)的结果是什么?您是否尝试在$res = DB::select();末尾添加->first()或->get()? -
它是一个数组。当我附加 ->get() 时,我收到错误调用数组上的成员函数 get()
-
为什么不只是
SELECT COUNT(*) FROM grp_user AS pivot JOIN groups AS g ON pivot.grp_id = g.id JOIN vote ON g.id = vote.grp_id WHERE pivot.grp_id = :grp_id AND pivot.user_id = :user_id? -
在这个答案中:stackoverflow.com/questions/1676551/…,选择存在是最快的。我提到的这个查询将被称为非常高的次数或次数(它是一种在群消息系统中授权用户的方式),所以我想要尽可能多的性能