Laravel Eloquent inner join with multiple conditions
To perform an inner join with multiple conditions using Laravel's Eloquent ORM, you can use the join
method on a query builder instance. Here's an example:
<?php
$users = DB::table('users')
->join('contacts', function ($join) {
$join->on('users.id', '=', 'contacts.user_id')->orOn('users.id', '=', 'contacts.manager_id');
})
->get();
This will perform an inner join between the users
and contacts
tables, using the $join
closure to specify the join conditions. The orOn
method allows you to specify additional conditions for the join using an OR statement.
Watch a video course
Learn object oriented PHP
You can also use the where
method in the closure to specify additional conditions for the join, like this:
<?php
$users = DB::table('users')
->join('contacts', function ($join) {
$join
->on('users.id', '=', 'contacts.user_id')
->orOn('users.id', '=', 'contacts.manager_id')
->where('contacts.user_id', '>', 5);
})
->get();
This will perform the inner join with the additional condition contacts.user_id > 5
.
I hope this helps! Let me know if you have any questions.