laravel - Laravel 从列或外键过滤
问题描述
我有一个subscriptions
带有user_id
, date_from
, date_to
, plan
,status
列的表。在刀片文件中,只有一个过滤器文本框。我想根据这些列或用户表中的字段fname
进行mname
过滤。lname
如何正确地做到这一点?到目前为止,这是我的代码。
$subscriptions = Subscription::where(function ($query) use ($q) {
$query->orWhere('plan', 'LIKE', '%' . $q . '%')
->orWhere('date_from', 'LIKE', '%' . $q . '%')
->orWhere('date_to', 'LIKE', '%' . $q . '%')
->orWhere('status', 'LIKE', '%' . $q . '%');
})->orWhereHas('user', function ($query2) use ($q) {
$query2->orWhere('fname', 'LIKE', '%' . $q . '%');
$query2->orWhere('mname', 'LIKE', '%' . $q . '%');
$query2->orWhere('lname', 'LIKE', '%' . $q . '%');
})->orderBy('id', 'desc')
->paginate(10)->appends('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);
推荐阅读
- javascript - 选择表格的特定第 n 个子元素
- hash - 当我使用nslookup时,IP地址后跟数字的哈希符号是什么意思?
- node.js - AWS:上传到 S3 的 pdf 文件为空白
- c++ - 为什么在平台 A 上编译的静态库不能在平台 B 上使用而没有警告?
- python - 分离数据框列
- jquery - 带有常规 Div 的 JQuery UI 对话框堆叠顺序
- python - 不规则斑点中的最大圆/椭圆数
- c# - 无法找到 .NET Core SDK
- google-sheets-api - 如何根据单元格变化告诉客户发票状态
- python - Python 无法加载 boost.python dll