Laravel join 和 unionAll

问题描述 投票:0回答:1

我有一个数据库查询。它现在已经可以工作了,但是我试图将

unionAll
方法添加到这个查询中,但我没有这样做。我想用
unionAll
方法合并两个表。

    $uid = Auth::id();

    $homeCovering = DB::table('bid_requests')
        ->leftJoin('bid_home_coverings', 'bid_requests.id', '=', 'bid_home_coverings.bidId')
        ->where('bid_requests.userId', '=', $uid)
        ->where('district', '!=', null)
        ->get();

    $vehicleCovering = DB::table('bid_requests')
        ->leftJoin('bid_vehicle_coverings', 'bid_requests.id', '=', 'bid_vehicle_coverings.bidId')
        ->where('bid_requests.userId', $uid)
        ->where('district', '!=', null)
        ->get();
php laravel
1个回答
6
投票

使用

unionAll()
方法,还要确保你确实需要union all,union和union all是有区别的

$homeCovering = DB::table('bid_requests')
    ->select('bid_requests.*')
    ->leftJoin('bid_home_coverings', 'bid_requests.id', '=', 'bid_home_coverings.bidId')
    ->where('bid_requests.userId', '=', $uid)
    ->where('district', '!=', null);

$bid_requests = DB::table('bid_requests')
    ->select('bid_requests.*')
    ->leftJoin('bid_vehicle_coverings', 'bid_requests.id', '=', 'bid_vehicle_coverings.bidId')
    ->where('bid_requests.userId', $uid)
    ->unionAll($homeCovering)
    ->where('district', '!=', null)
    ->get();

或者您可以将这些查询合并为单个查询

$bid_requests = DB::table('bid_requests')
    ->select('bid_requests.*')
    ->leftJoin('bid_vehicle_coverings', 'bid_requests.id', '=', 'bid_vehicle_coverings.bidId')
    ->leftJoin('bid_home_coverings', 'bid_requests.id', '=', 'bid_home_coverings.bidId')
    ->where('bid_requests.userId', $uid)
    ->where('district', '!=', null)
    ->get();

如果您需要不同的出价请求,请添加

->distinct()

© www.soinside.com 2019 - 2024. All rights reserved.