Задать вопрос
  • Какое регулярное выражение в regex для имени?

    @jazzus Автор вопроса
    JhaoDa, вот зачем менять. Я бы не ставил Ларавел если бы там не было особенностей. Опять будет без ответа
  • Какое регулярное выражение в regex для имени?

    @jazzus Автор вопроса
    JhaoDa, в сети пишут, что для ларавел есть свои особенности для regex. В любом случае шутк 5 php регулярок и тот который в примере не работаютш
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    откатился обратно и понял, что репозиторий в случае Auth::user()->metod нафиг не нужен только усложнит читаемость
  • Какое регулярное выражение в regex для имени?

    @jazzus Автор вопроса
    Mysterion, Но и регулярное тоже нужно, чтобы например сказать пользователю, чтобы не вводил всякие спецсимволы
  • Какое регулярное выражение в regex для имени?

    @jazzus Автор вопроса
    Mysterion, Да, удобнее. Не подскажите что загуглить?
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    любо гит протестировать))
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    Alex Wells,
    вот что я предложил изначально. И оно либо так, либо так же но в методе репозитория, никак по другому.

    Ясно. Спасибо) В общем придумал я себе развлечение по пустому рефакторингу на 2 дня.. Тогда буду делать уже репозиторий, чтобы не зря
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    Это пример того как делать НЕ НУЖНО.

    Можете запрос написать, как нужно делать?
    И в какой модели. Так будет проще. Заранее спасибо)
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    я уже во всем приложении исправил. Сделал ScopeTrait для всех юзерных моделей с методом
    public function scopeAllOfAuthUser($query)
        {
           return $query->where('user_id', Auth::id());
        }

    У меня и было Auth::user()->products до этого..
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    Alex Wells, А вот теперь я в коде увидел почему скоп из продукта единственно верный вариант, а юзер не подходит. т.к. если например product вызывается из list то я бы уже не мог просто вставить скоп
    ofUser(); т.к. он бы находился в юзере. Нужно было бы танцевать с бубном. Так что хорошо, что послушал спасибо)
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    В общем скрипя зубами и в муках выбора перенес в скопы продукта. Хотя так до конца и не понял, что лучше из юзера или из продукта билдер получать
    Product::ofUserBySlug($slug);
    Или
    Auth::user()->productBySlug($slug);
    Судя по отзывам и статьям на хабре люди хранят билдеры где им нравится (для Лары не принципиально т.к. она сама, как один большой репозиторий).

    В итоге сделал скоп в Product
    public function scopeOfUserBySlug($query, $slug)
        {
             return $query->where('user_id', Auth::id())
                          ->whereSlug($slug);
        }

    И сразу с проверкой по Auth внутри(без передачи юзера), чтоб уж наверняка только авторизованный юзер имел доступ
  • Сколько стоил в разработке Bitrix24 CRM или подобные системы?

    @jazzus
    kamnerobot,
    Не исключаю, что в такой бюджет осилить проект не возможно

    100%. Начнете реализовывать все фишки по тз - вы просто выкините деньги, сделать это качественно невозможно. Уберите 90% функционала. Оставьте только несколько самых горячих функций, которые были идеей и которые хотите продавать. Или одну. Следуйте совету Lander: делайте MVP.
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    Я понимаю, что конкретная модель и запросы должны относится к своей таблице. User относится к users, product к products. И не по Eloquent делать запросы продукта у юзера. Но в данном случае не просто продукт. А продукт пользователя. Т.е. нечто, что состоит из двух моделей - объект отношения hasMany с дополнительными условиями.
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    Alex Wells, мне в данном скопе
    public function scopeOfUserBySlug($query, $user, $slug)
        {
            return $query->whereUser_id($user->id)->whereSlug($slug);
        }

    не очень нравится, что он идет параллельно отношению. Уже ведь есть отношение в user где определена связь с продуктом и так выходит, что я с этим скопом буду опять искать продукт по user_id через where при живом отношении. Интуитивно как-то не нравится
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    Alex Wells, Да, насчет ролей это я мягко говоря погорячился..))
    Далее: почему бы не сделать $user->products()->whereSlug($slug)? Учитывая контекст, смею предположить что именно такой запрос вам нужен не так уж и часто, а значит это - неплохое решение. Нужен будет эктив - ну добавляете скоуп в модель Product и имеете счастье, типа $user->products()->whereSlug($slug)->isActive().

    Вы здесь предлагаете не убирать в отдельный запрос?
    Т.е. просто $user->products()->whereSlug($slug); в контроллерах?
    У меня сейчас так везде. Ну почти (я сократил до $user->product($slug); а whereSlug($slug) уже в модели user. Считаете ничего не менять не нужно? $user->objects() оставить? И все isActive просто добавлять в контроллерах? Это конечно заманчивый вариант)) Т.к. у меня много где нужно будет рефакторить. Но все же есть ощущение потери контроля над приложением. Т.к. в 4х местах добавишь isActive, а в 5м забудешь. Если все таки выносить эту логику в метод, то в каком лучше месте его реализовывать? Трейт, репозиторий или модель. Как считаете?
    Кстати, почему не правильно делать такие старты билдера в модели user? Там ведь есть отношения. Типа products(). По идее логично сделать productBySlug($slug) и productById($id) если products есть. Есть коллекция продуктов у юзера (отношение), и есть конкретный продукт (запрос к отношению). По идее логично. Разве это не Eloquent Style? Я склонялся к такому варианту сегодня и был рад этой идее)
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    Alex Wells, ааа т.е. наоборот не советуете их использовать. Понял. Спасибо буду думать
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    Alex Wells, т.е. мне нужен некий репозиторий. И как я прочитал - в php это просто класс, который хранит различные варианты коллекций объектов. Т.е. методов, которые через различные запросы получает объекты и потом их оттуда вытягивать.
    Получается:
    Я создаю класс ProductRepository
    там делаю запрос (пока еще точно не понял какой)
    и вызываю потом в контроллерах (new ProductRepository($slug))->ofUserBySlug();
    Т.е. думать и гуглить в направлении этих репозиториев?)) ппц.. сколько там всего
  • Какой запрос выбрать для скопа?

    @jazzus Автор вопроса
    Спасибо за идеи, сейчас буду вникать. Как раз занимаюсь данным вопросом. С утра была идея собрать запрос в модели user. Я вчера с квадратной головой был и не сообразил, что могу в user сделать именованный метод productOfUserBySlug и его уже совершенствовать как угодно с activ и т.д. Единственное у меня не просто User а юзеры, разделенные по ролям.. Думаю, нужно ли мне в методе устраивать дополнительные проверки на роль типа
    public function productForGlavnayaBySlug($slug)
        {
          if ($products=$this->products() and $this->hasActiveRole(Role::ID__GLAVNAYA))
          {
              return $products->whereSlug($slug)->whereActive(true)->isApproved();
          }
        }

    Технически конечно не нужно, наверное.. Т.к. авторизованный юзер, который имеет продукт все равно какой роли. Он уже владелец по факту. Но идеологически) Вдруг чего. Ошибся где в контроллере. А так есть проверка и сразу покажет. Хотя, как практика показывает, придумаешь такое, увидишь через пару дней, по лбу себе ударишь и на делит))