代码之家  ›  专栏  ›  技术社区  ›  Iqlas Uddin

Laravel中基于外键的搜索

  •  3
  • Iqlas Uddin  · 技术社区  · 7 年前

    拉雷维尔5*

    我有 Case 与具有一对一关系的模型 Customer 模型定义如下:

    public function customer
    {
       return $this->hasOne(Customer::class, 'id', 'customer');
    }
    

    在案例列表(cases.index)中,它根据关系显示客户名称 $case->customer->name .

    我正在尝试创建搜索,并根据客户名称列出所有案例。

    是否有基于关系的本地搜索方式?

    2 回复  |  直到 7 年前
        1
  •  5
  •   Alexey Mezenin    7 年前

    使用 whereHas() 方法例如:

    Case::whereHas('customer', function($q) use($name) {
        $q->where('name', 'like', '%' . $name . '%');
    })->get();
    
        2
  •  1
  •   Nikola Gavric    7 年前

    你可以通过 scopes ,将此代码放入客户模型中:

     public function scopeOfName($query, $name) {
          $query->where('name', 'like', '%' . $name . '%');
     }
    

    然后您可以通过以下方式访问它:

     $case = Case::with(['customer' => function($query) use ($customerName) {
        $query->ofName($customerName);
     }]);