Laravel DB 里的 union 怎么用呢?
我想把同时查询两个表,然后把结果排序:
$topics = Topic::select(['id','title as title2','created_at'])->where('title','like','%'. $keyword .'%')->orwhere('body','like','%'. $keyword .'%');
$test_psies = TestPsy::select(['id','title as title2','created_at'])->where('title','like','%'. $keyword .'%')->orwhere('body','like','%'. $keyword .'%')->union($topics)->latest()->paginate(10);
我要怎么判断哪个来自哪张表?
使用
union
的时候必须遵守一个规则,查询字段必须是一致的。而且报错信息已经写得很明显了,字段冲突。Topic表和TestPsy表必须取相同字段才能使用
union
我光看报错信息了,还没看到你下面问了一句
另外比如查询出来结果以后,我要怎么判断哪个来自哪张表
你用原生sql能查出来,那说明你laravel代码生成的和你原生写的不一样,不然怎么会报错。你原生sql是和报错信息的sql一样吗?
回答你这句问题,
union
查的出来结果是重复数据,就是说两个表都有。不存在你要判断结果来自于哪里。你的mysql水平有待提高啊,这是入门就会学的知识点。有一个方法:你可以在SELECT后面加上常量加以区分:
如下图 :+1: :joy: