根据 Laravel 中的外键搜索

Search based on foreign key in Laravel

Laravel 5.*

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

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

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

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

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

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

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

然后你会这样访问它:

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

使用whereHas()方法。例如:

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