Laravel 5 从SQL查询创建查询生成器

Laravel 5 从SQL查询创建查询生成器,laravel-5,laravel-query-builder,Laravel 5,Laravel Query Builder,我的目标是在Order db上创建一个搜索,但其中一些有关系 是否可以为此SQL查询创建查询生成器: 从'order'中选择*作为 在b.id=a.user\u id上以b的身份加入'users' 哪里 LPAD(a.id,6,'0')类似于“%keyword%” 或 b、 名称类似于“%keyword%” 或 a、 订单详细信息,如“%keyword%” 现在,我猜测对每个标准使用或where,例如: Order::where(函数($query)使用($keyword){ $query->

我的目标是在Order db上创建一个搜索,但其中一些有关系

是否可以为此SQL查询创建查询生成器:

从'order'中选择*作为
在b.id=a.user\u id上以b的身份加入'users'
哪里
LPAD(a.id,6,'0')类似于“%keyword%”
或
b、 名称类似于“%keyword%”
或
a、 订单详细信息,如“%keyword%”
现在,我猜测对每个标准使用
或where
,例如:

Order::where(函数($query)使用($keyword){
$query->where(str_-pad('Order.Order_-id',6',0',str_-pad_-LEFT),'LIKE','%'。$keyword'%'))
->orWhere('Order.Order_detail'、'LIKE'、'%'.$keyword.'%');
})
->orWhere(函数($query)使用($keyword){
//请在此处加入用户表
$query->where('Order.name'、'LIKE'、'%'。$keyword'%');
})
试试这个:

Order::where(DB::raw(“LPAD(id,6,'0')”,“LIKE',“%”.$keyword.“%”)
->orWhere('order_detail'、'LIKE'、'%'.$KEYONE.'%'))
->orWhereHas('user',函数($query)use($keyword){
$query->where('name'、'LIKE'、'%'。$keyword.'%');
})->get();

你看过
LPAD()
了吗?我目前设法让SQL运行:
SELECT*FROM Order AS JOIN User AS b ON b.id=a.User\u id其中LPAD(a.id,6,'0')类似于“%000001%”或类似于“%000001%”的b.name或类似于“%000001%”的a.order\u详细信息
您可以在问题中替换它吗?我尝试了此操作并收到以下错误:
{“状态”:“错误”,“消息”:“方法照明\\数据库\\查询\\生成器::用户不存在”。}
您必须在
订单
模型中定义
用户
关系。像这样<代码>公共函数customer(){return$this->belongsTo('App\Users','user_id');}是。但是
user()
而不是
customer()
;-)我将查询更新为
或wherehas('user'
。是的,它可以工作!但我仍然对查询生成器语法感到困惑,比如为什么我必须将模型关系函数名放在引号中..需要在这方面进行更多练习。谢谢,我很高兴你能提供帮助,我接受你的答案=)