Laravel中如何按条件获取左表全量数据及关联表匹配数据
实现思路
你的需求可以通过LEFT JOIN(左连接)实现,核心注意点:当前登录用户的筛选条件要写在关联条件ON子句中,不能写在WHERE子句中,否则会过滤掉没有匹配cart记录的product数据。
参考SQL语句
假设当前登录用户的id为@current_user_id(实际使用时替换为你传入的真实用户id变量即可),语句如下:
SELECT p.id AS product_id, p.name AS product_name, p.price AS product_price, c.id AS cart_id, c.qty AS cart_qty, c.user_id FROM product p LEFT JOIN cart c ON p.id = c.product_id AND c.user_id = @current_user_id;
说明
- 所有product表的记录都会被保留
- 如果某商品在当前用户的购物车中存在,就会返回对应的cart表字段值,否则cart相关字段返回
NULL - 如果不需要返回cart的id、user_id字段,可以自行调整SELECT后的字段列表
内容的提问来源于stack exchange,提问作者user6085744
相关产品推荐
相关产品推荐

