Ответы пользователя по тегу Laravel
  • Связь таблиц, моделей Laravel, для выборки неповторяющихся элементов?

    Это через join запрос делается. Вбейте в яндексе mysql join и зайдите в раздел картинок, там куча схем, показывающих, как написать такой запрос.
    Ответ написан
    Комментировать
  • Как обработать истечение срока?

    Учите очереди, при создании задания добавляете на момент его окончания задачу проверить, истекло ли конкретно это задание (и не обработано ли оно ещё), плюс, реализуете совет от FeNUMe на случай если задания будут исполнены раньше срока (для этого и нужна первая проверка на то, исполнена задача или нет. В идеале ту. Бы удалить задачу из очереди, но ларавел на текущий момент этого не позволяет). Если сделаете то, что отметили решением, то когда задач не будет, ваши ресурсы будут работать вхолостую, отнимая процессорное время (на это наплевать, пока вы не перешли на оплату за ресурсы, но зачем приучаться к говнокоду?), а когда (если) сервис станет огромным и задач станет слишком много, он будет захлёбываться в задачах, очереди же равномерно распределят нагрузку и не дадут вам наговнокодить в попытке решить эту проблему, так как их можно распараллелить на несколько потоков.
    Ответ написан
  • Как вернуть пользователя на страницу после входа через Socialite?

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

    flarum погуглите, только он в бете уже несколько лет, он на компонентах ларавел сделан.
    Ответ написан
    Комментировать
  • Как очистить кэш файлы по маске?

    https://laravel.com/docs/5.6/cache#cache-tags - но это не сработает с драйвером database. С ним только вручную придумывать механизм.
    Ответ написан
  • Best Practice при работе с репозиториями в Laravel?

    Если у вас большая часть данных может быть взята с помощью eloquent - не стоит внедрять репозитории. Два года уже работаю над проектом, в котором в наследство были добавлены репозитории (все реализовано так, как у вас описано + как описал D3lphi), пришел к выводу, что это избыточный слой. В ларавел они хорошо выглядят разве что когда много сложных запросов и часто используется query builder. Но если все-таки решили, помните, что репозитории не должны отдавать из себя Eloquent модель.
    Ответ написан
    2 комментария
  • Как защититься от ситуаций одновременного редактирования данных разными пользователями?

    Добавить флаг "редактируется". При открытии проверять его и выводить предупреждение, при сохранении снимать. Также можно добавить и id того, кто редактирует.
    Ответ написан
    Комментировать
  • Как правильно подключить темплейт компонента vue.js в laravel?

    Почитать документацию к версии ларавел 5.4 - https://laravel.com/docs/5.4/frontend#writing-vue-... там все есть, включая example.vue
    Ответ написан
    Комментировать
  • Кеширование: репозиторий или модель?

    Над репозиторием. Я делал следующим образом: пишу репозиторий, его интерфейс, затем через сервис контейнер привязываю интерфейс к реализации. Позже другой код-код-код, затем спустя некоторое время уже пишу слой кэша и всю логику кэширования. Кэширующий класс наследует тот же самый интерфейс и после написания подставляется в сервис-контейнер вместо текущей реализации. Можно кэширующий слой поставить еще выше, все от вашей архитектуры зависит (поэтому однозначного ответа тоже не будет), но ниже лично я смысла не вижу, может просто примеры не попадались, когда это требовалось. А архитектура в рамках ларавела четко не задана. Есть некие инструменты, описанные в документации, но вы можете строить архитектуру так, как вам кажется наиболее правильным. Я в свое время проникся статьей о гексагональной архитектуре и сейчас изложенные в ней принципы мне очень и очень нравятся (не сказать, что там что-то новое написали, просто разложили по полочкам внятно уже существующие вещи).
    Ответ написан
    Комментировать
  • Почему валидатор laravel пропускает пустой массив изображений?

    'image' => 'required|array'
    Ответ написан
    Комментировать
  • Отношения между таблицами(моделями) в Laravel?

    Ставьте у пользователя связь hasMany к категориям пользователя, а у категорий ставьте также связь hasMany к статьям. А затем делайте User::with('categories' => function($query) {$query->with('articles')}) и разбирайте полученный массив
    Ответ написан
  • Как проверить instanceOf в blade?

    А есть ли смысл усложнять код и не использовать стандартные конструкции блейда @if и @foreach?
    Ответ написан
    1 комментарий
  • Неизвестная переменная в laravel 5.3?

    У вас точно роут обрабатывается в контроллере, а не отдается вьюха напрямую из файла роутов? В логе ошибки никакой контроллер не упомянут.
    Ответ написан
    Комментировать
  • Как происходит загрузка классов в php фреймворках?

    Не все. Сейчас ради интереса глянул проект, который делаю - он подключает 466 файлов, начиная с Index.php. Пoсле запуска artisan optimize количество файлов уменьшилось почти вдвое (laravel-recipes.com/recipes/60/optimizing-the-fram... - почитайте тут. Плюс в документации посмотрите про кеширование роутов и конфиг файлов через artisan).

    Плюс если вы не используете какую-то модель или контроллер для генерации текущей страницы, они также не будут подключены. По сервис-провайдерам боюсь соврать, но возможно они тоже не подключаются, до момента непосредственного вызова, если они отложенные (https://laravel.com/docs/5.1/providers#deferred-pr...

    А вообще вопрос с файлами решается наверное на всех хостингах использованием кешеров (https://ru.wikipedia.org/wiki/%D0%90%D0%BA%D1%81%D..., файлы не просто грузятся в память, а еще и компилируются для ускорения запуска.
    Ответ написан
    Комментировать
  • Репозиторий и ActiveRecord, хорошая ли идея возвращать модели?

    Тоже столкнулся с таким. Есть мнение, что модели возвращают потому, что в них уже можно прописать все необходимое для вывода данных, равно как и спрятать лишние поля, а также преобразовать/добавить недостающие атрибуты. Но наличие метода save() за пределами репозитория смущает. На данный момент пришел к тому, что репозиторий у меня преобразует модели в сущности (самопальными трансформерами наподобие fractal.thephpleague.com) перед тем, как отдать их, но с логикой сохранения внутри репозитория пока не пришел к конечному варианту - часто в проекте требуется не просто сохранить строку в бд в одну таблицу, а сделать гораздо более сложные вещи и вся эта логика завязана именно на процесс сохранения, поэтому не вижу способа вынести эту логику куда-то из репозитория. Но такие вещи, как return session()->flash() в примере по вашей ссылке, считаю лучше на уровне выше генерировать в зависимости от отданных репозиторием данных, они тут вообще никаким местом.

    Вообще сам пока ищу наиболее удобный вариант построения приложений (засматриваюсь на гексагональную архитектуру), но применить что-то глобальное на проекте, которым занимаюсь уже год и который разрабатывался с 2014 года просто не могу. Поэтому рассматривайте мои измышления лишь как рассуждения человека, столкнувшегося с этой же проблемой и находящемся на том же пути.
    Ответ написан
    2 комментария
  • Чат Laravel 5.2?

    В последний раз использовал centrifuge для этого. Пользователь отправляет сообщение в приложение ларавел, а приложение делает трансляцию всем кому надо с помощью event broadcasting (версия ларавел была 5.1). Если нужен чат и только чат, то тут мне кажется лучше было бы использовать javascript либо go на сервере, у php с вебсокетамии беда.
    Ответ написан
    Комментировать
  • Зачем использовать Vue вместе с Laravel?

    Добавили, чтобы вы jquery спагетти не использовали. Vue (как и другие js фреймворки) сокращает количество кода на клиенте и уменьшает его запутанность.

    Для примера вы создаете админку для магазина. У вас есть следующие варианты:
    1. Делать статическую страницу. На клиенте никакой логики, все вычисляет сервер. При новой покупке администратор должен будет обновить страницу.
    2. Писать динамический фронтэнд с использованием vue, angular и чего угодно остального. Бэкэнд шлет вам уведомления через вэбсокеты о новых заказах без перезагрузки страницы.
    2.1 Вы берете jquery и сначала все идет хорошо. Первые полчаса. Затем ваш код обрастает огромным количеством обработчиков событий. Если товар заканчивается на складе, его надо убрать из таблицы, затем если заказ отменяется, его надо вернуть в таблицу. Вы его вернули, но почему-то кнопка в строке с ним, вызывающая модальное окно перестала реагировать на события, потом еще что-то случилось и еще. Проблемы с jquery растут как снежный ком и вы проклинаете свое решение создать динамическую админку.
    2.2 Вы используете современный js фреймворк. Vue в этом плане хорош низким порогом изучения. Вы загружаете определенные обхекты и в зависимости от их свойств vue сам строит таблицы (с проданными и непроданными товарами), скрывает лишние элементы (не показывать такую-то кнопку, если товар всего 1), отправляет плагинам команды на обновление при изменении объектов и следит за тем, чтобы события, которые отваливались при jquery подходе работали.

    Я не сказать что спец в javascript, но (именно поэтому) меня vuejs на текущем проекте очень выручает.
    Ответ написан
    Комментировать
  • Почему не работает связь?

    belongsToMany вообще не применим в данной ситуации - это отношение многие ко многим. Вы можете использовать его для того, чтобы получить Itemы конкретных пользователей, да и то если пропишете таблицу Orders как промежуточную. Используйте hasMany для получения заказов и почитайте вдумчиво различие между всеми видами связей в документации. Очень вдумчиво. Потому что пока не осознаете различия в типах связи, не сможете их использовать.
    Ответ написан
    Комментировать