You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel控制器中如何查询关联指定tag_id的房屋数据

正确的Laravel多对多关联查询写法

你的错误原因是直接在Rental_house表中查询tag_id字段,但这个字段实际存储在多对多的**数据透视表rentalhouse_tags**里,而非房屋主表,所以会触发字段不存在的报错。

要筛选关联特定tag_id的房屋,需要用whereHas方法针对关联模型的条件进行过滤,同时保留原有的分类ID筛选逻辑,正确代码如下:

$rentalcategoryhouses = Rental_house::whereIn('rentalcat_id', $rentalcategorydetails['catids'])
    ->whereHas('housetags', function ($query) use ($data) {
        $query->where('tag_id', $data['rentaltag']);
    })
    ->with('housetags') // 可选:如果需要同时加载房屋关联的所有标签数据
    ->get();

补充说明

  • whereHas:用来筛选存在符合条件的关联模型记录的主模型数据,这里就是确保房屋关联了指定tag_id的标签。
  • 如果只需要加载匹配的标签(而非所有关联标签),可以把with('housetags')改成带闭包的形式:
    ->with(['housetags' => function ($query) use ($data) {
        $query->where('tag_id', $data['rentaltag']);
    }])
    

内容的提问来源于stack exchange,提问作者stephen waweru99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:30:59