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

Laravel使用laravel-translatable时如何同时搜索翻译表和关联属性表字段

控制器代码调整

直接修改你的search方法如下即可:

public function search(Request $request) {
  $search = $request->input('search');
  $products = Product::where(function ($query) use ($search) {
      // 匹配翻译表的产品名称
      $query->whereTranslationLike('name', '%' . $search . '%');
      // 匹配关联属性表的SKU字段
      $query->orWhereHas('attributes', function ($subQuery) use ($search) {
          $subQuery->where('sku', 'like', '%' . $search . '%');
      });
  })->with('attributes')->get();

  return view('search', compact('products'));
}

代码说明

  • 外层的where闭包是为了对两个搜索条件做逻辑分组,避免后续如果加其他全局查询条件时出现逻辑错乱
  • orWhereHas方法会查询关联的attributes表中是否存在符合SKU模糊匹配条件的记录,只要产品下有任意一个属性的SKU匹配搜索词,该产品就会被命中
  • 如果你的SKU需要精确匹配,直接去掉代码中的%通配符即可
  • 视图代码无需做任何修改,原有的关联数据渲染逻辑可以直接复用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:57:03