#1054-带反记号的未知列

ntjbwcob  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(329)

当我在mysql的where子句中使用backticks时,得到了1054-unknown列错误

`roles`.`id`

但它可以和

'roles.id'

你知道为什么,怎么解决吗?我需要使用backticks来使用laravel雄辩的查询生成器。

select * 
from `users` inner join `role_user` on `users`.`id` = `role_user`.`user_id` 
where `roles`.`id` = `role_user`.`role_id` and (`users`.`id` = 8) and `users`.`id` = 8

laravel-雄辩的提问:

Policy::whereHas('role.users', function ($query) use ($user_id) {
            $query->where([
                'users.id' => $user_id
            ])->get();
        });
ih99xse1

ih99xse11#

正如@barmar所说,我的查询缺少一个 roles 中的表 FROM 或者 JOIN 条款。因为我有这个错误,因为查询是由laravel-eloquent生成的,所以我将发布我的解决方案以供将来参考。

Policy::whereHas('role.users', function ($query) use ($user_id) {
            $query->where([
                'users.id' => $user_id
            ]);
        })->get();

问题是因为我把get放错了查询生成器的内部 whereHas 而不是查询生成器的最外层。

相关问题