laravel-5 - 从 SQL 查询中创建查询生成器
问题描述
我的目标是在 Order db 上创建搜索,但其中一些有关系。
是否可以为此 SQL 查询制作查询生成器:
SELECT * FROM `order` AS a
JOIN `users` AS b ON b.id = a.user_id
WHERE
LPAD(a.id,6,'0') LIKE '%keyword%'
OR
b.name LIKE '%keyword%'
OR
a.order_detail LIKE '%keyword%'
现在,我猜想使用orWhere
每个标准,例如:
Order::where(function ($query) use ($keyword) {
$query->where(str_pad('Order.order_id', 6, '0', STR_PAD_LEFT), 'LIKE', '%'. $keyword .'%')
->orWhere('Order.order_detail', 'LIKE', '%'. $keyword .'%');
})
->orWhere(function ($query) use ($keyword) {
//DO JOIN WITH USER TABLE HERE
$query->where('Order.name', 'LIKE', '%'. $keyword .'%');
})
解决方案
尝试这个:
Order::where(DB::raw("LPAD(id, 6, '0')"), 'LIKE', '%'. $keyword .'%')
->orWhere('order_detail', 'LIKE', '%'. $keyword .'%')
->orWhereHas('user', function ($query) use ($keyword) {
$query->where('name', 'LIKE', '%'. $keyword .'%');
})->get();
推荐阅读
- excel - 计算数据集和另一列中特定标准的公式
- node.js - 设置后无法发送标头
- java - 在java中使用Enum来存储一组固定的可变对象
- python - Moblenet V2:将生产者版本较低的图导入生产者版本较高的图
- mongodb - 如何在 mongodb 中搜索嵌入的文档?
- python - 在 django admin 中为每个用户分配一个单独的 html 页面
- javascript - React Data Grid 在取消过滤后不保留更改
- bash - 覆盖 cd 命令以保存 bash zsh 历史记录的绝对路径
- c# - 如何链接两个期望您提供流的 C# API?
- asn.1 - ASN.1 BER Encode Integer 0x10000000FFFFFFFC 不定长度编码