2014-09-29 2 views
0

기존 Rest API 접근 방식에서 내 응용 프로그램은 사용자가 특정 계정과 관련이 있는지 확인해야합니다. 여러 계정에 대해 작업을 수행 할 수 있으므로 모든 요청에 ​​대해 쿼리가 실행됩니다. 이것이 가장 자주 호출되는 쿼리이기 때문에 밝기는 내 마음을 편안하게하는 데 중요합니다. 어떻게 든이 모두 (? 웅변 버그) 오류를 생성Laravel의 가장 가벼운 검색어에 대한 Eloquent 검색은 무엇입니까?

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

오류

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

웅변

를 사용

현재 쿼리를 위로 내 질문에 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

캐싱은 실제로 다음 단계 환호를 실패합니다. Eloquent가 생성 한 쿼리에 대해서는 실패한 위치를 알고 있지만 Eloquent가 실패한 쿼리를 생성하는 이유는 무엇입니까? 나는 당신의 마지막 발언에 대해 당신을 바로 잡아야한다. where (column, value)는 허용됩니다. http://laravel.com/docs/4.2/queries –

+0

네, 맞습니다. 항상이 param의 명시 적 선언을 사용했습니다. –

+0

답변의 구문 부분을 대단히 업데이트 하시겠습니까? 다른 독자를 혼동하지 않기 위해서. –

관련 문제