• Как посмотреть ошибку на проде Laravel?

    Alex_Wells
    @Alex_Wells
    part_os, а что? Юзерам показывать ошибки на проде нельзя. Используйте sentry.
  • Почему в __construct перестал определятся аутентифицированный пользователь?

    Alex_Wells
    @Alex_Wells
    ettychel, ну и пусть вызывается, вам то что? А еще у вас вызывается Arr::get по всему проекту, или еще какая хрень. Что будете делать?

    Если делаете такой метод - называйте authUser(), потому что от user() нихрена не понятно, откуда он берется. А если назвать authUser(), но не проще ли делать auth()->user(), $this->auth->user() или Auth::user()?
  • Почему в __construct перестал определятся аутентифицированный пользователь?

    Alex_Wells
    @Alex_Wells
    А не проще ли доставать юзера самому? Зачем этот метод вообще?
  • Как группировать материалы с учетом ч/з?

    Alex_Wells
    @Alex_Wells
    Immortal_pony,
    я не вижу проблем в том чтобы написать гидрацию при необходмиости.

    Ну да, почему бы и нет - покрыть весь проект raw'ами и разгребать это говно через годик :)
    Это известный и вполне рабочий подход.

    Да ну? Известный где, в твоих проектах? БД для этого не предназначена и не должна этим заниматся. Группировка в СУБД создана так же не для этого.

    И как это не относится? Код НУЖНО писать хорошо. Примера вверху это не касается. Даже и близко. СОВСЕМ.
  • Хорошие практики тестирования в Laravel проектах?

    Alex_Wells
    @Alex_Wells
    Nikolino, ну да, но это не только тестов касается)
  • Как группировать материалы с учетом ч/з?

    Alex_Wells
    @Alex_Wells
    Immortal_pony,
    обоснуете
    - так что предлагаешь, писать свою велосипедную абстракцию для построения подобных конструкций по всему проекту, которая потом вылезет боком, или в стопятсот местах говнокодить одинаковый DB::raw?

    СУБД прекрасно это умеет

    Ах СУБД умеет! СУБД отдает данные в виде таблицы и никак иначе, следовательно единственный вариант, который прокатит - это твой говнокод выше с имитацией json'а. Я вообще в ахуе, что кому то пришла такая идея в голову. Даже не знаю, как на такое реагировать.
  • Как группировать материалы с учетом ч/з?

    Alex_Wells
    @Alex_Wells
    Вон, в примере, необходимо сгруппировать данные по дате с учетом таймзоны клиента. Предположим, а таблице с данными 100000 записей. Их все на клиент перекинуть и там группировать?

    Вернется то 100 тысяч записей что с группировкой, что без, и перекинуть нужно будет сто тысяч в обеих случаях - в чем разница?
    Да, конечно.

    Извини, но это хуйня какая-то.
    то сервер их и отдаст.

    Лол. То есть отдавать одни и те же данные дважды, просто потому что фронту лень работать с датами? От бека идет минимальный нужный набор данных. Данные от бека должны быть МАКСИМАЛЬНО независимыми от фронта.
    то можно указывать значение offset прямо в параметре timezone

    Мда. А давайте ка придумаем велосипед, которым ОЧЕНЬ УДОБНО пользоватся, а так же забудем о консистентности (в каждом запросе одни и те же данные могут означать разные вещи - что есть пиздец), ради того, что бы.. что бы что? Я так и не понял, нахрена так делать.
    Ах негласный. Ну тогда все понятно, конечно.

    Именно негласный. Точно такой же, как и хранение дат в UTC в базе, а не в чем-то другом. Или использование utf8mb4 вместо utf8/любой другой в mysql. Или расстановка foreign ключей. Или тайп-хинтинг + var аннотации. Продолжать?
  • Хорошие практики тестирования в Laravel проектах?

    Alex_Wells
    @Alex_Wells
    Nikolino, первый вариант. Сохраняет - один, вытягивает - второй, обновляет - третий.

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

    Alex_Wells
    @Alex_Wells
    Immortal_pony, это даже и близко не то, что хочет автор. Ему нужно выделить разные ключи, а вы делаете group by по СУБД, который к этому не имеет никакого отношения.

    Кроме того, если у вас есть нужда писать ТАКОЕ (три функции, пять параметров) - значит вы что-то делаете не так.
  • Как группировать материалы с учетом ч/з?

    Alex_Wells
    @Alex_Wells
    Immortal_pony,
    при этом принимать таймзону как параметр
    - может. Вопрос - нахрена?

    Где ответ на вопрос с публичным АПИ? Будете к каждому запросу лепить таймзону как параметр? А как вебсокетам знать, в какой таймзоне вы хотите ответ?

    Еще вопрос: как будете выводить дату, если по ТЗ нужно вывести ее в двух часовых зонах - локальной и по Moscow? Ваш лучший вариант - спарсить дату в указанной таймзоне momentjs'ом, предварительно указав таймзону, и засетать Moscow. Консистентность? Не, не слышал.

    Еще вопрос, который я уже задавал: каким образом будете фиксить неправильное время на ПК клиента? Вы можете гарантировать, что у каждого, кто пользуется вашим фронтом, будет верное время? Нет? Каким образом будете компенсировать? Добавлять ВТОРОЙ параметр, помимо таймзоны, типа offset и указывать кол-во часов-минут?

    Это негласный стандарт, конечно же. Такой же, как и ХРАНЕНИЕ дат в UTC.

    Разделяйте ответственность между фронтом и беком.
  • Как группировать материалы с учетом ч/з?

    Alex_Wells
    @Alex_Wells
    Immortal_pony, мешают стандарты, принятые в разработке. АПИ не должно быть привязано ни к какому юзеру, и, следовательно, никакой таймзоны он не знает. А что если АПИ публичное? В какой таймзоне отдавать? UTC? А что если есть публичная форма (без авторизации), с полем типа дейттайм? В каком формате отправлять?

    Стандартизация. Везде UTC. Потому что так проще всем.

    А на фронте показывай себе что хочешь. Хочешь показывать неавторизированному в его локальной таймзоне - да пожалуйста, momentjs легко угадает твою таймзону и прибавит нужное время. Тоже самое и с формой. При этом код для авторизированных и неавторизированных юзеров не отличается СОВСЕМ.

    Эта группировка там лишь для того, что бы на фронте вывести данные в таком формате. Уже понял проблему? Бекенд не волнует, как там выводит данные фронт. Он вообще не знает о фронте. Максимально, что знает бекенд о фронте - это то, какой минимальный набор полей нужен на каждую модель данных. ВСЕ. Больше никаких дополнительных "спарсенных" полей, "красивых" дат или, боже упаси, группировок по ключам. Фронту нужно выводить так - так пусть этим и занимается, при чем тут бэк то?
  • Как заменить whereHas, ибо он слишком медленный?

    Alex_Wells
    @Alex_Wells
    root09, если 20-30 - в categories индекс не нужен (хотя если 20-30, то он и не помешает). В связывающей таблице обязательно, два отдельных (вообще там должны стоять foreign ключи, которые ставят индексы сами).

    На работе используется whereHas в намного более сложных конструкциях в базе с десяткой-сотней миллионов записей. Никаких проблем, даже на локалке. Проблема не в нем.
  • Можно ли выбрасывать исключение в предикатах?

    Alex_Wells
    @Alex_Wells
    Алексей Николаев, производительность сложных запросов сразу видна в процессе их построения, так что маловероятно, что неоптимизированная хрень попадет в репозиторий, если разработчик - ответственный. Опять же, откройте дебаггер и посмотрите, какую маленькую долю времени занимают запросы в БД в сравнении со всем остальным - удивитесь.
  • Можно ли выбрасывать исключение в предикатах?

    Alex_Wells
    @Alex_Wells
    Алексей Николаев, вообще нет. Вообще не в базе. Попробуйте открыть дебаггер и посмотрите, сколько времени занимает инициализация фреймворка, ваша бизнес логика и вывод всего этого дела в сравнении с базой данных - вы удивитесь.
  • Куда размещать бизнес логику приложения laravel?

    Alex_Wells
    @Alex_Wells
    JohnDaniels, передавать в класс все данные вручную. $request->all() и подобное тоже не катит.
  • Как проверить права пользователя в Laravel?

    Alex_Wells
    @Alex_Wells
    Антон, "не нашел решения как" - и вы спрашиваете, при чем тут документация? При том, что она - главный источник информации. Какое "решение" кроме как документация вы ожидали?

    Я читал вопрос. Этот вариант - говнокод. Он НЕ поддерживаемый, он НЕ очевидный для разработчика, который будет это поддерживать, он НЕ тестируется, он нарушает SOLID. Этот вариант НЕ СТОИТ использовать.

    Вам уже помогли. Дважды. Один раз сказали про роли-пермишены - вы проигнорили. Второй - про политики, на что вы ответили тупой отмазкой "не нашел решения". Мне стоит продублировать их ответы?
  • Как проверить права пользователя в Laravel?

    Alex_Wells
    @Alex_Wells
    Антон, что не нашли? Документацию по политикам? Скинуть ссылку, или сами найдете?
  • Почему не выводится через @foreach laravel?

    Alex_Wells
    @Alex_Wells
    $category->children->where('published', 1 )->count()

    Просто идеально.