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)抱怨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
)
有道理,不夠公平,所以我改變了名單
$query->purchased($userID)->lists('characters.id')
以爲命名錶和列應該修復它,但發現該列表功能減退的「性格」。部分等都有相同的錯誤。
它似乎列表可能不使用點符號,帶我到我的問題......我可以逃避點符號或有另一種方式來獲得ID的列表作爲數組?
非常感謝
那先生,是最優秀的。這種簡單的解決方案。非常感謝。 – 2014-11-03 18:51:35
非常歡迎。 – Bogdan 2014-11-03 18:54:28
Laravel 5仍是一個問題,這仍然可以解決問題。 – ShaunUK 2015-05-12 15:25:56