Laravel关系列'id'在where子句中不明确

Posted

技术标签:

【中文标题】Laravel关系列\'id\'在where子句中不明确【英文标题】:Laravel relationship Column 'id' in where clause is ambiguousLaravel关系列'id'在where子句中不明确 【发布时间】:2017-07-22 16:26:17 【问题描述】:

我有课程和订阅类型。 我想获取所有具有给定订阅类型的课程。 我的尝试:

$courses=Course::wherehas('subscriptionType',function ($q)
        
            return $q->where('id','1');
        )->get();

但这失败了:

where 子句中的列 'id' 不明确

有什么建议吗?

【问题讨论】:

【参考方案1】:

我测试了您的代码,它运行良好,没有任何更改。您的关系定义可能有问题。

但是,您可以通过进行以下更改使其运行。

return $q->where('id','1'); 替换为 return $q->where('subscriptiontypes.id','1'); 我假设订阅类型模型的表名是订阅类型。

完整代码如下:

$courses=Course::wherehas('subscriptiontype',function ($q)
        
            return $q->where('subscriptiontypes.id','1');
        )->get();

【讨论】:

以上是关于Laravel关系列'id'在where子句中不明确的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 查询关系 where 子句

未找到列:Laravel 5 多对多关系查询中“on 子句”中的 1054 未知列“managers.id”

如何在 laravel 雄辩的关系中使用 where 子句

使用 Eloquent 在 Laravel 中使用 where 子句访问嵌套的相关对象

Laravel 6:如何将多个 where 子句添加到关系中

拉拉维尔 |唯一验证 where 子句