什么是Laravel对关系最轻的查询的雄辩搜索?

时间:2014-09-29 08:12:12

标签: php mysql laravel eloquent relationship

在经典的Rest API方法中,我的应用程序需要检查用户是否与某个帐户相关。我们可以对多个帐户执行操作,因此将在每个请求上执行查询。 由于这是我们最常被称为查询的问题,因此它的轻盈对我的内心安心很重要。

当前查询,使用Eloquent

$user-> accounts()-> where($primaryKey, $id);

不知何故,这两个都会产生错误(Eloquent bug?)

$user-> accounts()-> find ($id);
$user-> accounts()-> where ($primaryKey, $id)->count();

错误: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'a_id' in where clause is ambiguous (SQL: select * from 'accounts' inner join 'users_accounts' on 'accounts'.'a_id' = 'users_accounts'.'a_id' where 'users_accounts'.'u_id' = 1 and 'a_id' = 1 limit 1)

回到我的问题,是否有一个更优雅的解决方案然后"其中"功能

1 个答案:

答案 0 :(得分:0)

如果这是您最常用的查询之一,为什么不缓存它呢?

$user->accounts()->where($primaryKey, '=', $id)->remember(60)->get();

上述查询失败,因为您在两个表中都有一个具有相同名称的列

where 'users_accounts'.'u_id' = 1 and 'a_id' = 1