【问题标题】:Laravel 8 - How to use where conditions for relation's columnLaravel 8 - 如何使用关系列的条件
【发布时间】:2022-01-09 12:35:36
【问题描述】:

你好朋友,你能帮我获取$filter的内容吗?我想运行目标列在关系数组中的位置

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

【问题讨论】:

  • 您可以使用whereHas laravel.com/docs/8.x/eloquent-relationships,with 将根据过滤器返回null,但不会被过滤掉,因此将 $filter 放到 whereHas 将过滤列表,如果barang 返回 null。
  • @Forbidden 感谢您的回复。我已经尝试了您的建议,但我仍然收到错误..您能给我一个示例代码吗?非常感谢你
  • “但我仍然收到错误”...什么错误?
  • 你好 @lagbox 感谢您的回复,所以我收到这样的错误 Illuminate\Database\Eloquent\Builder::whereHas(): Argument #2 ($callback) must be of type ?Closure, string given, called in D:\Project\inventory-web\vendor\laravel\framework\src\Illuminate\Support\Traits\ForwardsCalls.php on line 23
  • 我已经尝试过了,但是我得到了一个错误 ` $d​​imensions = DetailBarang::query() ->with('barang') ->whereHas('barang', function ($查询) 使用 ($filter) { return $query->where('brand', 'LIKE', '%' . $filter . '%'); }) ->first() ->barang() ->get (); `

标签: laravel model where-clause laravel-8 eloquent-relationship


【解决方案1】:

你可以试试这个

    $filter = $request->get('Biogear');
    $data = DetailBarang::with('barang')->whereHas('barang',function (Illuminate\Database\Eloquent\Builder $q) use ($filter) {
        $q->where('brand', '=', $filter);
    })->get();

    return response()->json($data);

【讨论】:

  • 你好@Bhargav Ragani .. get() 之前你的代码在哪里得到];
  • 编辑了我的答案,不需要]
  • 非常感谢所有回答我问题的人......我找到了答案并且它有效......再次,我非常感激。我希望你们永远身体健康
猜你喜欢
  • 2013-01-15
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 2020-04-20
  • 2019-09-11
  • 2021-10-19
  • 2021-10-09
相关资源
最近更新 更多