gpt4 book ai didi

Laravel Eloquent 或WherePivot 未返回预期结果

转载 作者:行者123 更新时间:2023-12-02 21:11:12 25 4
gpt4 key购买 nike

我有一个 Eloquent 查询,但没有得到预期的结果,我希望有人可以向我解释编写查询的正确方法。

我有三个表:

records (belongsToMany users)
users (belongsToMany records)
record_user (pivot)

record_user 表还有一个用于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 角色的结果符合预期:用户是歌手的所有记录。问题是歌曲作者的结果:我得到了所有歌曲作者,并且查询不受user_id的限制。出于某种原因,我期望songwriter角色也受到user_id的限制 - 使用 Eloquent 语法编写此内容的正确方法是什么?

最佳答案

嗯..我认为您需要使用高级 where 子句。

$results = Auth::user()
->records()
->where(function($query) {
$query->where('record_user.role', '=', 'singer')
->orWhere('record_user.role', '=', 'songwriter');
})
->get();

关于Laravel Eloquent 或WherePivot 未返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33353710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com