Laravel 5。*
我的Case
模型与Customer
模型具有一对一关系,定义如下:
public function customer
{
return $this->hasOne(Customer::class, 'id', 'customer');
}
在案例列表(cases.index)中,它根据关系$case->customer->name
显示客户名称。
我正在尝试创建搜索并根据客户名列出所有案例。
是否存在基于关系进行搜索的本地方式?
答案 0 :(得分:2)
使用whereHas()
方法。例如:
Case::whereHas('customer', function($q) use($name) {
$q->where('name', 'like', '%' . $name . '%');
})->get();
答案 1 :(得分:1)
您可以通过scopes
实现这一目标,将此代码放入您的客户模型中:
public function scopeOfName($query, $name) {
$query->where('name', 'like', '%' . $name . '%');
}
然后你会这样访问它:
$case = Case::with(['customer' => function($query) use ($customerName) {
$query->ofName($customerName);
}]);