Query Builder в Laravel для сложных SQL запросов
Query Builder в Laravel— это единый источник для взаимодействия с базой данных, независимо от ее SQL, sqlLite, postgresql или mongodb. Laravel позволяет Query Builder(построителю запросов) взаимодействовать с базой данных независимо от того, какую базу данных мы используем за сценой. Давайте протестируем и создадим еще несколько запросов с помощью Query Builder.
Запрос Where с Between
$leads = DB::table( 'leads' )
->whereBetween( 'age', [ 20, 30 ] )
->get();
Запрос Where с In
$leads = DB::table( 'leads' )
->whereIn( 'state', [ 'LA', 'GA', 'AL' ] )
->get();
Запрос Where с IS NULL
$leads = DB::table('leads')
->whereNull('city')
->get();
Запрос Where с IS NOT NULL
$leads = DB::table('leads')
->whereNotNull('city')
->get();
Запрос whereRaw
Мы можем поместить необработанный SQL в качестве параметра метода whereRaw следующим образом:
$leads = DB::table('leads')
->whereRaw('city = "New York"')
->get();
Помните, что параметры метода «whereRaw» не будут экранированы, поэтому мы должны использовать этот метод очень осторожно. В противном случае это может привести к SQL-инъекции.
$leads = DB::table( 'leads' )->whereExists( function ( $query ) {
$query->select( 'id' )
->from( 'meta' )
->whereRaw( 'meta.lead_id = leads.id' );
} )->get();
Получить значения из нескольких столбцов
Теперь мы можем использовать этот запрос для получения различных значений из некоторых столбцов нашей базы данных.
$cities = DB::table( 'leads' )
->select( 'city' )
->distinct()
->get();
Упорядочить записи
Если мы хотим упорядочить наши записи по значениям в некоторых столбцах базы данных, мы можем использовать этот запрос.
$leads = DB::table( 'leads' )
->orderBy( 'created_at', 'desc' )
->get();
$leads = DB::table( 'leads' )
->orderByDesc( 'created_at' )
->get();
$leads = DB::table( 'leads' )
->orderByRaw( 'leads.created_at' )
->get();
Снова используйте orderByRaw() очень осторожно.
Запросы GROUP BY и HAVING
$leads = DB::table('leads')
->select('city', 'state')
->groupBy('city', 'state')
->get();
$leads = DB::table('leads')
->select('age')
->groupBy('age')
->having('age', '>', 20)
->get();
$leads = DB::table('leads')
->select('age')
->groupBy('age')
->havingRaw('age > 20')
->get();
Использование Skip() и Take()
$leads = DB::table('leads')->skip(10)->take(5)->get();
Использование Latest() и old()
Latest() и old() просто сортируют наши записи на основе «create_at», если ни один столбец не передан, но если есть какие-либо столбцы, они сортируются на основе параметров.
$leads = DB::table('leads')->latest()->get();
$leads = DB::table('leads')->oldest()->get();
inRandomOrder()
inRandomOrder() просто возвращает записи в случайном порядке.
$leads = DB::table('leads')->inRandomOrder()->get();
Вывод
Надеемся, теперь вы понимаете все о Query Builder Laravel и о том, как он работает.