October 30, 2023 laravel

Laravel 10 Join Dengan Beberapa Kondisi

Laravel 10 query builder menyediakan method untuk melakukan join.

User::join('posts', 'users.id', '=', 'posts.user_id')
    ->get();

Join dengan beberapa kondisi bisa dilakukan menggunakan closure pada argument kedua method join.

use Illuminate\Database\Query\JoinClause;

User::join('posts', function (JoinClause $join) {
    $join->on('users.id', '=', 'posts.user_id');
    $join->on('users.country', '=', 'posts.country');
})->get();

Join dengan perbandingan kolom dan nilai, nilai perlu dimasukkan ke DB::raw atau menggunakan where pada join.

use Illuminate\Database\Query\JoinClause;
use DB;

User::join('posts', function (JoinClause $join) {
    $join->on('users.id', '=', 'posts.user_id');
    $join->on('posts.country', '=', DB::raw('ID'));
    $join->where('posts.status', '=', 'draft');
})->get();

Sumber: