За последние 24 часа нас посетили 22649 программистов и 1020 роботов. Сейчас ищут 678 программистов ...

Laravel универсальный select запрос в бд

Тема в разделе "Laravel", создана пользователем volnistii11, 25 май 2021.

  1. volnistii11

    volnistii11 Новичок

    С нами с:
    5 авг 2020
    Сообщения:
    26
    Симпатии:
    0
    Здравствуйте, не могу найти материалов, чтобы реализовать с помощью Laravel Eloquent какой-то плюс минус универсальный запрос выборки из базы данных.
    Чтобы он одинаково хорошо работал и с limit и без него, и с order by и без него, с условием и без и т.д.
    В обычном php это реализовывалось при помощи подачи в функцию массивов и переменных и в зависимости от них при помощи конкатенации получался составной запрос, а как делать что-то подобное в Laravel? Ведь, в ларе это не просто string строка, которую можно сунуть в query запрос и т.д., здесь же обращение к методам класса идет. Не понимаю, как это реализовать.
    Спасибо за внимание=)
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    если правильно понял вопрос - точно так же....

    Принцип такой

    PHP:
    1. $all = Users::query();
    2.  
    3. if (isset($filter['category']) {
    4. $all->where('category_id',$filter['category']);
    5. }
    6.  
    7. if (isset($limit)) {
    8.   $all = $all->take($limit);
    9. }
    10.  
    11. ....
    12.  
    13. return $all->get();
     
  3. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    856
    Симпатии:
    132
    Свой велик написать, не?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Зачем? В ларе как раз гораздо удобнее составлять запрос динамически, вызывая методы Query Builder-а, как показал @ADSoft. Не надо конкатенацию делать даже, всё ларка сделает. И везде сам подготовленные запросы поставит.

    @volnistii11 https://laravel.com/docs/8.x/queries - всё расписано. До момента get Laravel это всё хранит внутри объектов, потом склеивает в строку сам, и не нужно тонну бреда на эту тему писать, как со строкой. И не нужно думать, что сначала написать, where, having, join или group by - в каком бы порядке методы вы не вызвали, в запрос всё будет подставлено в правильные места