laravel中使用union操作

发布时间:2023-09-22 22:37:23 阅读:714次

我们可能需要将两张表联合在一起

不是left join,而是union

在laravel中如何实现union

1.直接在db在查询构造器中实现

查询语句构造器也提供了一个快捷的方法来「合并」两个查找。

例如,你可以先创建一个初始查找,然后使用 union 方法将它与第二个查找进行合并:

$first = DB::table('users')
            ->whereNull('first_name');
            
$users = DB::table('users')
            ->whereNull('last_name')
            ->union($first)
            ->get();
2.Eloquent 进行 Union

该文章就是介绍这个

$query1 = User::select ( 
    'id',
    'name',
    \DB::raw ( '"first_name" AS name' )
)->where ( 'name', 'LIKE', '%zongscan%' );

$query2 = User1::select (
    'id',
    'name',
    \DB::raw ( '"two_name" AS name' )
)->where ( 'name', 'LIKE', '%zongcan%' );

$query2->union ( $query1 )->get();

ps:

 UNION 操作,需要确保从所有查询返回的字段是相同的,否则就会出现错误

如何两张表字段有差异

可能构造不存在的字段

$list = $list->select('*',\DB::raw('0 as dismiss_date,0 as operator_id'));

然后在union

如何两张表结构一样,但是字段的字符集不一样也会出错

可以在迁移文件的时候设置编码

$table->string('last_login_token')->nullable()->comment('登录token')->collation('utf8_general_ci');

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:laravel中使用union操作 出自老鄢博客 | 欢迎分享