我是laravel的新手。我正在研究这个laravel 5应用程序,但却试图执行如下的查询。
select * from carts inner join users on carts.manager_id = users.id
where cart_num like "e%" OR name like "e%"
having region = (select region from users where id = 3);
修改
查询的目的是让管理员的购物车与管理员在同一地区(因此可以选择subselect .id是管理员的ID)
修改
我提出了类似的事情:
return Cart::join('users', 'carts.manager_id', '=', 'users.id')
->where('cart_num', 'like', $match . '%')
->orWhere('name', 'like', $match . '%')
->having('region', '=', function ($query) use ($id) {
return $query->select('region')->where('id', '=', $id);
})
->get();
关于如何改进having子句的任何想法。我得到错误类Closure的对象无法转换为字符串。感谢
答案 0 :(得分:1)
我认为这就是你需要的
<td class="details perimter">
<div class="details-container">
<!-- ... skipped ... -->
</div>
</td>
答案 1 :(得分:0)
这是一个没有该子选择的相同查询,我认为这是不必要的。你可以改为实现它并将region参数传递给它吗?自您加入该表后,您的用户已经拥有了一个区域,而user.id
应成为主键,因此您无论如何都会拥有一个区域。
select * from carts inner join users
on carts.manager_id = users.id
and users.region = $region
where cart_num like "e%" OR name like "e%" ;