Ответы пользователя по тегу Laravel
  • Headerless cms на базе Laravel можно/нужно?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    Вы и из WordPress'а можете сделать headless. WP даёт отличный API. Я на своей практике реализовывал такой бекенд для сайта React и мобилок. Было больно - но не так, как писать всё с нуля. Заказчик получил удобную панель управления + огромный репозиторий плагинов WP.

    Что касается Laravel - да, можно. Но готовы ли вы тратить такое количество времени на то, что, по факту, уже есть в WP? Та же админка - ну вряд ли у вас получится сразу же сделать так удобно и красиво как у WP.
    Ответ написан
    Комментировать
  • Тесты Laravel, config() или env()?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    Используйте в основном коде и тестах только config().
    Это связано с тем, что у вас в приложении всегда должен быть только одни источник данных.

    Простой пример из дефолтной сборки Laravel. В app.php есть строка:
    'name' => env('APP_NAME', 'Laravel'),
    Самое просто, что вы можете сделать, это вызвать config('app.name') где-нибудь в коде, чтобы получить данные из этой настройки. Вот только если вы вызовите env('APP_NAME') вы, возможно, получите ошибку, в случае, если эта переменная не задана в переменных среды.
    Но как вы видите из кода выше, она совершенно необязательно должна быть задана в переменных среды, так как для неё задано значение по умолчанию: Laravel. А значения в конфиге могут быть вообще самой разной степени извращённости. И они могут составляться из частей. Например:
    'endpoint' => 'https://' . env('API_DOMAIN') . '/some/subroute',


    Это банальный и простой пример. Но на большой проекте с массой переменных и настроек вы однозначно столкнётесь с трудностями такого рода.

    Ваша задача сделать код удобным и читаемым. Чтобы будущие программисты могли распутать макаронину, что вы сплели. А разнообразие источников данных только запутает читателя.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы часть запроса (одно из условий) выполнялась всегда larave eloquent?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    Ничего не понятно из вопроса, но, возможно, речь идёт о andWhere и orWhere
    $user = User::where('role_id', 3)
      ->andWhere(function($query) {
        $query
          ->where('phone', 'like', "%{$search}%")
          ->orWhere('email', 'like', "%{$search}%");
      })
      ->paginate(25);
    Ответ написан
  • Как заменить id на другой уникальный столбец в маршрутах при использовании ресурсных контроллеров?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    Читайте документацию.
    Вас интересует Route Model Binding - Customizing The Key

    use App\Models\Post;
     
    Route::get('/posts/{post:slug}', function (Post $post) {
        return $post;
    });
    Ответ написан
  • Используются ли фабрики Laravel в коде?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    Почему странно? Вы приведите пример конкретной фабрики и напишите, почему считаете такой подход неправильным. Любой паттерн можно использовать как угодно, вопрос в том, справится ли он с поставленными задачами и будет ли это удобно следующему программисту в будущем.

    Из вашего вопроса не очень понятно, как именно фабрики использовались. Применение в сервисах мне сложно представить на лету, но в контроллерах они могу отвечать за сложную логику со связанными моделями, где есть куча входных данных и несколько выходных моделей или отношений.

    ОБНОВЛЕНИЕ
    Если вопрос не про паттерн, а про Eloquent Factories как заметил Дмитрий то использование их вне тестовой среды ошибочно само по себе. Так как эти фабрики созданы для тестирования и сидирования, а не для боевого использования. Я уже молчу о том, что таким образом есть шанс, что "фейковые" данные просочатся в продакшен. Для исключения этих сложностей и существуют fillable и guarded свойства моделей, которые не учитываются в фабриках, насколько я знаю.
    Ответ написан
  • Как лучше передать данные с чекаута на создание бронирования?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    Вы неправильно представляете себе архитектуру саму.
    Ключевое, что вы делаете неверно - доверяете пользователю выбирать цену за вас. Условно, если пользователь, поменяет в ссылке &total= на 0, то и цена станет для него нулевой, а это неправильно.

    Правильно ссылку будет привести к виду:
    http://site.test/checkout/5?datetimes=27+Oct%2C+2022+-+29+Oct%2C+2022&date_start=10%2F27%2F2022&date_end=10%2F29%2F2022&cost_per_night=200.00

    И то, лучше cost_per_night убрать и заменить на бекенде на ID комнаты, тогда ссылка станет совсем правильной и красивой:
    http://site.test/checkout/5?datetimes=27+Oct%2C+2022+-+29+Oct%2C+2022&date_start=10%2F27%2F2022&date_end=10%2F29%2F2022&room_id=2


    А дальше вы уже у себя на бекенде обсчитываете количество ночей, конечную стоимость. В идеале, получаете ещё какие-то данные по комнате из базы (название, фото, описание и т.д.) и выводите пользователю.
    Ответ написан
  • Как провести стресс-тест для загрузки файлов через API?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    Есть нагрузочное тестирование. Смотрите в его сторону, реализация очень много.
    Например, Яндекс.Танк: https://yandex.ru/dev/tank/
    Ответ написан
    Комментировать