我有一個雄辯的查詢,我沒有得到預期的結果,我希望有人可以向我解釋什麼是編寫查詢的正確方法。Laravel雄辯或無法遷移不會返回預期結果
我有三個表:
records (belongsToMany users)
users (belongsToMany records)
record_user (pivot)
的record_user
表也有role
列。
我試圖讓所有地方的用戶有兩種singer
或songwriter
的role
記錄:
$results = User::find(Auth::user()->id)
->records()
->wherePivot('role', 'singer')
->orWherePivot('role', 'songwriter')
->get();
下面是SQL語法是如何產生的:
select `records`.*, `record_user`.`user_id` as `pivot_user_id`,
`record_user`.`record_id` as `pivot_record_id` from `records`
inner join `record_user` on `records`.`id` = `record_user`.`property_id`
where
`record_user`.`user_id` = '1' and `record_user`.`role` = 'singer' or
`record_user`.`role` = 'songwriter'
結果爲singer
角色是預期的:用戶是歌手的所有記錄。問題是songwriter
的結果:我收到了所有歌曲作者,查詢不受user_id
的限制。出於某種原因,我期待songwriter
角色也受到user_id
的限制 - 使用雄辯語法編寫此代碼的正確方法是什麼?
那麼究竟是什麼你想獲得?所有用戶是歌曲作者或歌手的記錄? –
@PawelBieszczad是 – Jon