【问题标题】:Search based on foreign key in LaravelLaravel中基于外键的搜索
【发布时间】:2018-02-22 13:03:51
【问题描述】:

Laravel 5.*

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

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

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

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

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

【问题讨论】:

    标签: php mysql laravel laravel-5 laravel-eloquent


    【解决方案1】:

    使用whereHas() 方法。例如:

    Case::whereHas('customer', function($q) use($name) {
        $q->where('name', 'like', '%' . $name . '%');
    })->get();
    

    【讨论】:

      【解决方案2】:

      您可以通过scopes 实现这一点,将此代码放入您的客户模型中:

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

      那么你可以这样访问它:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-16
        相关资源
        最近更新 更多