Как использовать 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 и о том, как он работает.