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

Laravel 8 如何为关联关系的字段添加where查询条件

你当前的写法只会预加载符合brand = $filter条件的barang关联数据,不会过滤主表DetailBarang的记录,最终返回结果会包含所有DetailBarang条目,不符合条件的记录的barang字段会为空,不符合「关联字段满足条件才返回主表记录」的需求。

根据你的实际需求选择对应调整方案:

场景1:需要返回满足条件的主表记录+符合条件的关联数据

如果是Laravel 9及以上版本,可直接使用withWhereHas简化写法,同时完成主表过滤和关联预加载:

$filter = $request->get('Biogear');
$data = DetailBarang::withWhereHas('barang', function ($q) use ($filter) {
    $q->where('brand', '=', $filter);
})->get();
return response()->json($data);

低版本Laravel需要分开写whereHas(过滤主表)和with(预加载关联):

$filter = $request->get('Biogear');
$data = DetailBarang::whereHas('barang', function ($q) use ($filter) {
    $q->where('brand', '=', $filter);
})->with(['barang' => function ($q) use ($filter) {
    $q->where('brand', '=', $filter);
}])->get();
return response()->json($data);

场景2:只需要过滤主表记录,不需要返回关联的barang数据

直接保留whereHas逻辑即可:

$filter = $request->get('Biogear');
$data = DetailBarang::whereHas('barang', function ($q) use ($filter) {
    $q->where('brand', '=', $filter);
})->get();
return response()->json($data);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:15:11