Задать вопрос
  • Как можно сократить код?

    @jazzus
    Для условий в запросах есть when, разбить на страницы можно с помощью paginate, with как писали в комментариях нужен будет везде иначе что-то с логикой.
    $buildingId = $request->input('building_id');
    
    Post::published()
        ->whereCategoryId($request->input('posts_type'))
        ->when($buildingId, function ($query, $buildingId) {
    
          return $query->whereHas('buildings', function ($query) use($buildingId) {
                      $query->whereId($buildingId);
                  });
        })
        ->with('buildings')
        ->latest('published_at')
        ->paginate(6);
    Ответ написан
  • Вывод данных left join Repository?

    @jazzus
    Использовать связи. Добавить user_id в UserAttribute/UserService, hasOne связь
    public function attributes()
    {
        return $this->hasOne(UserAttribute::class);
    }


    UserAttribute связать с city
    public function city()
    {
      return $this->belongsTo(City::class);
    }


    Запрашивать
    User::with('attributes.city', 'services')
        ->paginate($perPage);


    Но UserAttribute лишняя прослойка. Данные поля лучше убрать в User и там прописывать связи.
    Ответ написан
    Комментировать
  • Как в ларавел выбрать юзеров, созданных за предыдущую неделю?

    @jazzus
    Предыдущая неделя это не между минус 14 и 7 дней. Для недель:
    User::whereBetween('created_at', [
            now()->startOfWeek()->subWeek(), 
            now()->startOfWeek()
          ])
        ->count();

    дни
    User::whereBetween('created_at', [
        now()->subDays(14), 
        now()->subDays(7)
      ])
    ->count();
    Ответ написан
    Комментировать
  • Как вызвать метод в конструкторе FormRequest?

    @jazzus
    Тонкими лучше делать не только контроллеры, но и форм-реквесты. И любые другие классы. Для этого каждый должен выполнять свою функцию. Например, авторизацией в Ларавел занимаются политики авторизации. Кроме чистоты кода и отсутствия велосипедов, логику доступа в политиках можно юзакть по всему приложению. Типа $user->can('view', $post) и т.д.
    пришла идея хранить в реквесте часто используемые переменные

    Какую-то свою логику если хочется куда-то вынести из контроллера лучше использовать свои сервис классы, а не первые попавшиеся классы Ларавел.
    Ответ написан
    1 комментарий
  • Как подгрузить связи в коллекции ресурсов laravel одним запросом?

    @jazzus
    В контроллере
    public function show(Post $post)
    {
      $post->load('relations');
       ...
    }

    В ресурсе
    'relations' => RelationResource::collection($this->relations)
    Ответ написан
    Комментировать
  • Оцените идею пожалуйста?

    @jazzus
    Доски объявлений/вакансий и соцсети давно закрывают эту потребность. И там куча бизнесменов без денег и возможностей. С которыми что-то оформлять только хорошо подумав. А лучше не надо) Гораздо лучше промониторить сферу и написать конкретному человеку если есть что предложить и он тебе точно нужен. Данный способ самый рабочий и быстрый. По поводу стартапа - имеет смысл если там будет в итоге полезная аудитория. Например, запрашивать подтверждение выручки компании/ип при регистрации. Сделать порог для каждой сферы (например от 1млн/мес и т.д.). Если нет идей чем проект будет интересен этой аудитории в сравнении с другими и как к ней обратиться, то стартап лучше не начинать. Просто сайт где кто-то может зарегистрироваться и что-то написать я бы делать не стал т.к. таких мест полно.
    Ответ написан
    Комментировать
  • Как правильно выводить обьект в Laravel?

    @jazzus
    Дебаг внутри цикла покажет первый объект, а не проблемный. Ошибка тк у одного из типов нет commercials
    Костыль типа
    if ($commercials) {
      $commercials = $commercials->building;
    }

    закроет эту проблему. Если будут аналогичные ошибки на связях то также проверять через if только в блейд синтаксисе. А так все нужно переписывать. Убрать запросы из шаблона в теге пхп и сделать нормальные связи с использованием with, а не фигачить запросы в бд на каждой итерации.
    Ответ написан
    Комментировать
  • Почем директива @json передает некорректно данные в атрибут?

    @jazzus
    :brands='@json($brands)'
    Ответ написан
    Комментировать
  • Как сделать авторизацию через ВК в Laravel?

    @jazzus
    Да много где пишут. Например, в соседней ветке) В описании провайдеров нет т.к. к социальной авторизации данные вопросы не относятся. Если юзера получил - искать по этим данным юзера в бд. Если не найден то создать юзера. Это вопросы работы с моделями Ларавел. Я еще сделал отдельную таблицу для соцсетей где указан provider_user_id со связью hasMany c юзером т.к. у юзера может быть много соцсетей и не быть емейла. Короче от логики приложения зависит. Авторизовать юзера так
    auth()->login($user);
    Ответ написан
    Комментировать
  • Laravel сортировка категорий по количеству записей?

    @jazzus
    $categories = Category::has('projects')
                          ->with('projects')
                          ->withCount('projects')
                          ->orderByDesc('projects_count')
                          ->get();
    Ответ написан
    Комментировать
  • Как создать проект с помощью laravel из командной строки?

    @jazzus
    Самое простое установить Laragon. На русском языке, установит все что нужно. Проект создается в 1 клик.
    Ответ написан
    Комментировать
  • Как можно реализовать связку двух моделей?

    @jazzus
    Уникальный слаг и думать над структурой бд и отношений
    Ответ написан
  • Как на Laravel делать приложения с формочками и CRUD операциями?

    @jazzus
    Т.е. все это размазывается по разным файлам, классам.

    Если данная концепция не устраивает нет смысла использовать Ларавел.

    Самое сложное, это то, что при любом изменении набора полей все это постоянно приходится править в разных местах.

    В IDE должна быть навигация по файлам, когда пишешь часть пути и тебе открывается список. Чтобы это работало наименования должны быть понятными и простыми.

    если для каждой модели это делать вручную, то это будет занимать кучу времени

    Кучу времени занимает поддержка велосипедов. В Ларавел новое поле добавляется за 5 минут. Миграция на добавление поля, добавить валидацию в реквест файл. Добавить инпут на фронт. Всё. Какой свой велосипед спасет от данных действий? Никакой. Везде нужно писать валидацию, добавлять поле в бд и на фронт.

    и приводить к постоянным ошибкам

    Чтобы не было ошибок нужно писать тесты. Т.е. перед добавлением поля пишешь всесторонний тест включающий валидацию и расслабляешься т.к. он приведет тебя к результату почти без необходимости думать. Плюс будет проверять в дальнейшем.

    А какой правильный путь стоит использовать в Laravel?

    Правильный путь указан самим Ларавел. См доки. Нужно использовать Ларавел и не писать велосипеды или писать велосипеды, а Ларавел оставить в покое)
    Ответ написан
    Комментировать
  • Socialite Driver [VKontakte] not supported Laravel. Как это можно исправить?

    @jazzus
    Переменная $listen находится в EventServiceProvider а не в App
    Ответ написан
    1 комментарий
  • Как правильно передать параметр в middleware laravel?

    @jazzus
    Вместо userHasAccess уже есть метод can. Т.е. в этом велосипеде нет необходимости. В моделях и так куча всего, чтобы нагружать их еще своими методами авторизации. Для таких целей в Ларавел есть политики. Не нужно доставать модели в мидлваре. Вызывается одной строчкой кода в контроллере и автоматом возвращает 403.
    Ответ написан
    Комментировать
  • Как правильно отправлять данные в restful api?

    @jazzus
    Если в видео в индексе возвращают LaravelResource то код ответа идет в комплектации. Его нуждно юзать, когда нужно вернуть ресурсы на фронт в том виде в котором они там нужны. Если ресурсы не нужны (например после store) то достаточно Json Response, как в твоем примере.
    Ответ написан
    Комментировать
  • Как делать лайки на Laravel?

    @jazzus
    Как станет невероятно большой и тормознутной, тогда можно легко и просто отделить проблемную сущность. Т.е. решать проблему, когда она появится, а не заранее. Это если появится. А пока можно сделать как в примере, только убрать likes в трейт туда же методы с лайками (запись/удаление и т.д.) чтобы код не дублировать, вместо
    $table->unsignedInteger('likeable_id');
    $table->string('likeable_type');
    написать
    $table->morphs('likeable');
    И коунт лайков можно в бд писать и инкрементить, чтобы запросов не делало
    Ответ написан
    7 комментариев
  • Как организовать view каталоги?

    @jazzus
    Как структурировать папки в Ларавел не написано. Делают кто как хочет. В примерах обычно начинают с ресурса в единственном числе и мне такой вариант тоже больше нравится
    user.index.base
    user.index.admin
    user.index.guest

    Где base является шаблоном для admin guest если они отличаются только частями.
    Ответ написан
  • Как вывести ошибки валидации во вью?

    @jazzus
    @error('age')
      {{ $message }}
    @enderror

    Рекомендую пройти какой-нибудь видеокурс по crud операциям/ работе с формами и освоить хелпер DD для дебага. Ответит на многие вопросы.
    Ответ написан
    Комментировать