从colums或到外键的Laravel筛选器

从colums或到外键的Laravel筛选器,laravel,eloquent,Laravel,Eloquent,我有一个订阅表,表中有用户id,日期,日期,计划,状态列。在blade文件中,只有一个过滤器文本框。我想根据这些列或用户表中的fname、mname、lname字段进行筛选。如何用雄辩的语言正确地做到这一点?这是到目前为止我的代码 $subscriptions=Subscription::where(函数($query)use($q){ $query->orWhere('plan'、'LIKE'、'%'。$q'%')) ->或where('date_from'、'LIKE'、'%'.$q'.')

我有一个
订阅
表,表中有
用户id
日期
日期
计划
状态
列。在blade文件中,只有一个过滤器文本框。我想根据这些列或用户表中的
fname
mname
lname
字段进行筛选。如何用雄辩的语言正确地做到这一点?这是到目前为止我的代码

$subscriptions=Subscription::where(函数($query)use($q){
$query->orWhere('plan'、'LIKE'、'%'。$q'%'))
->或where('date_from'、'LIKE'、'%'.$q'.')
->或where('date_to','LIKE','%.$q.'%'))
->或where('status'、'LIKE'、'%.$q.'%');
})->或者wherehas('user',函数($query2)use($q){
$query2->orWhere('fname','LIKE','%%.$q'%');
$query2->orWhere('mname'、'LIKE'、'%'。$q'%');
$query2->orWhere('lname'、'LIKE'、'%'。$q'%');
})->orderBy('id','desc')
->分页(10)->附录('q',$q);
试试这个:

$subscriptions = Subscription::where(function ($query) use ($q) {
    $query->where('plan', 'LIKE', '%' . $q . '%')
            ->orWhere('date_from', 'LIKE', '%' . $q . '%')
            ->orWhere('date_to', 'LIKE', '%' . $q . '%')
            ->orWhere('status', 'LIKE', '%' . $q . '%');
})->orWhereHas('user', function ($query2) use ($q) {
    $query2->where('fname', 'LIKE', '%' . $q . '%')
           ->orWhere('mname', 'LIKE', '%' . $q . '%')
           ->orWhere('lname', 'LIKE', '%' . $q . '%');
})->orderBy('id', 'desc')->paginate(10)->appends('q', $q);

您的输出有错误吗?我可以说只有一件事,那就是用
$query->where
替换2个闭包中的第一个
$query->where
没有错误。如果键入订阅表中的值,则可以正确筛选。但如果我从users表中键入名称,则不会显示数据。我需要
或where
,因为我需要它与所有列进行比较。实际上,这是第二个有效的方法。我只需要将
角色
更改为
用户
,因为这就是我的模型。啊,是的,很抱歉,这是我的示例:)