我正在尝试使用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可以引用offersanother_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/

10-16 15:31