2016-09-14 2 views
0

설득력있는 첫 단계를 수행하면서 일부 데이터를 검색하고 동시에 일부 조건을 계산하는 쿼리를 작성하려고합니다.Eloquent multiple 동일한 쿼리에서 선택

이 원시 SQL 문장은

SELECT * 
FROM photos, 
(SELECT COUNT(*) FROM photos where type = 1 and published =1 group by type) as qA, 
(SELECT COUNT(*) FROM photos where type = 2 and published =1 group by type) as qP 
where product_id = 7 
and published = 1 

을 예상하지만 사용하여 사진의 모델은 내가 "원시"문장을 스트리핑 같은 결과를

Photo::select(*, 
Photo::raw('count(*) where type = 1 and published =1 group by type as qA), 
Photo::raw('count(*) where type = 2 and published =1 group by type as qP)) 
->where ('product_id',7) 
->where('published', 1) 
->get() 

를 얻을 수로 작동이 쿼리가 작동하지만 그 "유형"을 계산해야합니다.

미리 안내해 주셔서 감사합니다.

+0

시도 쓰기를 시도 할 수 있었다 -> toSql() 대신 -> 수()하고 SQL 상응하는 무엇을 인쇄 할 수 있습니다. 그런 다음 필요에 따라 변경할 수 있습니다 (쿼리를 다시 작성해야 할 때마다 내 해결 방법) – abr

답변

0

정말 하나의 쿼리를 모두 받아야합니까? 귀하의 신청서에 의미가 있습니까? 내 생각에, 유형 수는 실제로 가져 오는 레코드 (product? id = 7)에 대한 정보가 아니라 테이블 전체에 대한 일반적인 정보입니다. 이 말이 있다면

, 당신은

$photo = Photo::where ('product_id',7) 
    ->where('published', 1) 
    ->get(); 

$types_count = Photo::where('published', 1) 
    ->selectRaw('type, COUNT(*) AS count') 
    ->groupBy('type') 
    ->get() 
    ->keyBy('type'); 

$qA = $types_count[1]->count; 
$qP = $types_count[2]->count; 
관련 문제