Laravel join 和 unionAll

bhd*_*nzl 3 laravel

我有一个数据库查询。它现在已经可以工作了,但我试图将该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();
Run Code Online (Sandbox Code Playgroud)

M K*_*aid 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();
Run Code Online (Sandbox Code Playgroud)

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

$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();
Run Code Online (Sandbox Code Playgroud)

如果您需要不同的出价请求,请添加->distinct()