根据 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();
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();