我正在尝试使用Laravel 5.3的Has Many Through option编写数据库查询
我的数据库表的布局如下:
http://sqlfiddle.com/#!9/a9c9af
这些表是:
公司
company_offers
优惠
在我的模型中,我具有以下设置:
public function offers()
{
return $this->hasManyThrough(
'App\Offers', 'App\CompanyOffers',
'company_offer_id', 'offer_id'
);
}
当我尝试运行以下代码行时:
return $this->whereHas('offers', function($query) use ($offer_id)
{
return $query->whereIn('offer_id', $offer_id);
});
我得到错误:
违反完整性约束:where子句中的1052列“ offer_id”
模棱两可
我该如何纠正这个问题并建立正确的关系?
我需要获取前端视图的商品标题和商品图标。
希望这有意义并且有人可以帮助我。
谢谢
最佳答案
“其中where子句不明确的列'offer_id'”基本上意味着SQL查询正在处理多个表,并且它不知道offer_id
指的是哪个表:
例如,查询可能正在做类似的事情
select offers.* from offers
left join another_table on another_table.field = offers.field
where offer_id = ?
请注意,上表中的
offer_id
可以引用offers
或another_table
中的列。要纠正错误,您需要在
offer_id
前面加上表名。像这样:return $this->whereHas('offers', function($query) use ($offer_id) {
return $query->whereIn('other_table.offer_id', $offer_id);
});
关于php - Laravel-经历了很多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39849668/