我正在尝试执行一个查询,过滤一个表上的2列或另一个表上的2列。这就是我到目前为止所做的:
// In my controller
return $registry = Registry::search($first_name, $last_name)->get();
// In my model
public function user()
{
return $this->belongsTo('User');
}
public function scopeSearch($query, $first_name, $last_name)
{
$search = $query->where('coregistrant_first_name', 'LIKE', "%$first_name%")
->where('coregistrant_last_name', 'LIKE', "%$last_name%")
->orWhere(function($query) use ($first_name, $last_name)
{
$query->$this->user()->where('first_name', 'LIKE', "%$first_name%");
});
return $search;
}
我尝试了很多不同的事情,现在我因{1}行而遇到了这个错误:
$query->$this->user()
任何人都知道如何解决这个问题?
答案 0 :(得分:0)
@Keith,在Laravel中,您无法使用关系动态选择数据。
据我所知,Laravel支持以下规则来使用关系检索数据:
$registers = Registry::with('user')->get();
$registers = Registry::where('xyz', '1')->get();
//然后你可以加载关系,如果你需要
$registers->load('user');
在你的模特中
public function user()
{
return $this->belongsTo('User')->where('first_name', 'LIKE', "%xyz%");
}
然后从你的控制器:
$registers = Registry::with('user')->get();
说你有licenses
关系
//您可以指定运算符和计数:
$registers = Registry::has('licenses', '>=', 3)->get();
答案 1 :(得分:0)
我最终使用查询构建器来完成它。