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

Laravel relationship Column 'id' in where clause is ambiguous

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

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

但这失败了:

Column 'id' in where clause is ambiguous

执行此操作有什么技巧吗?

我测试了你的代码,它在没有任何更改的情况下工作正常。可能是你的关系定义有问题。

不过,您可以通过进行以下更改来实现 运行。

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

完整代码如下:

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