Что такое красноречивый поиск Laravel по отношению к легчайшему запросу отношения?

В классическом подходе Rest API мое приложение должно проверить, связан ли пользователь с определенной учетной записью. У нас могут быть действия с несколькими учетными записями, поэтому запрос выполняется при каждом запросе.
Поскольку это наш наиболее часто называемый запрос, его легкость важна для моего спокойствия.

Текущий запрос, используя Eloquent

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

Каким-то образом они оба вызывают ошибки (Eloquent ошибка?)

$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)

Возвращаясь к моему вопросу, есть ли более элегантное решение, чем функция «где»?

0

Решение

Если это один из ваших наиболее часто используемых запросов, почему бы не кэшировать его?

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

Упомянутые запросы терпят неудачу, потому что у вас есть столбец с тем же именем в обеих таблицах

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]