3
내가 가진 여러 사용 조인을 만드는 쿼리Laravel 4.2 웅변
public function scopePurchased($query, $userId)
{
return $query
->join('products','characters.id','=','products.productable_id')
->join('bundle_product','bundle_product.product_id','=','products.id')
->join('bundles','bundles.id','=','bundle_product.bundle_id')
->join('purchases','purchases.bundle_id','=','bundles.id')
->join('users','purchases.user_id','=','users.id')
->whereNull('purchases.deleted_at')
->where('purchases.refunded', false)
->where('products.productable_type', '=', get_class($this))
->where('users.id','=',$userId)
->groupBy('characters.id')
->orderBy('characters.title', 'ASC');
}
그리고 내가 그렇게 다른 범위에서 사용이 쿼리에서 ID의 배열을 검색 할 :
$query->purchased($userID)->lists('id')
나의 초기 생각은 ID에 대한 모호한 쿼리에 대해 불평하는 목록 ('id')을 사용하는 것이 었습니다. 내가 생각
$query->purchased($userID)->lists('characters.id')
에 목록을 변경할 수 있도록
Column 'id' in field list is ambiguous
(
SQL: select `id` from `characters`
inner join `products` on `characters`.`id` = `products`.`productable_id`
inner join `bundle_product` on `bundle_product`.`product_id` = `products`.`id`
inner join `bundles` on `bundles`.`id` = `bundle_product`.`bundle_id`
inner join `purchases` on `purchases`.`bundle_id` = `bundles`.`id`
inner join `users` on `purchases`.`user_id` = `users`.`id`
where `characters`.`deleted_at` is null
and `purchases`.`deleted_at` is null
and `purchases`.`refunded` = 0
and `products`.`productable_type` = Character and `users`.`id` = 1
group by `characters`.`id`
order by `characters`.`title` asc
)
의미가 충분히 공정을 만드는 테이블의 이름을 지정하고 열을 수정해야하지만, 목록 기능이 떨어질 것을 찾는 '문자를.' 부분과 같은 오류가 발생했습니다.
목록에서 도트 표기법을 사용하지 않아서 제 질문에 대한 답변을 얻을 수 있습니다 ... 도트 표기법을 벗어날 수 있습니까? 아니면 ID 목록을 배열로 가져 오는 다른 방법이 있습니까?
많은 감사
저 선생님, 가장 우수합니다. 그런 간단한 해결책. 많은 감사합니다. –
대단히 반갑습니다. – Bogdan
아직 Laravel 5의 문제이며 여전히 해결책으로 사용됩니다. – ShaunUK