Сравнение двух колонок QueryBuilder
Первый вызов всегда идёт через table()
в котором указываем таблицу базы данных. Метод get()
указывает на окончание запроса и выполняет его в базу данных, возвращает объект Illuminate\Support\Collection
c результатами в котором каждый результат, это экземпляр класса stdClass
.
Для проверки на совпадение двух столбцов можно использовать метод whereColumn()
:
$users = DB::table('users')
->select('first_name', 'last_name')
->whereColumn('first_name', 'last_name')
->get();
SELECT `first_name`, `last_name` FROM `users` WHERE `first_name` = `last_name`
В метод также можно передать оператор сравнения:
$users = DB::table('users')
->select('name', 'email')
->whereColumn('updated_at', '>', 'created_at')
->get();
SELECT `name`, `email` FROM `users` WHERE `updated_at` > `created_at`
Также можно передать массив с несколькими условиями — они будут объединены оператором AND
:
$users = DB::table('users')
->select('first_name', 'last_name')
->whereColumn([
['first_name', '=', 'last_name'],
['updated_at', '>', 'created_at']
])
->get();
SELECT `first_name`, `last_name` FROM `users` WHERE (`first_name` = `last_name` AND `updated_at` > `created_at`)