• Очереди Laravel. Как выполнять задачи в фоне?

    xpert13
    @xpert13
    Full Stack Developer
    Читаем внимательно документацию: https://laravel.com/docs/queues

    Если коротко, то по умолчанию у вас в env используется QUEUE_DRIVER=sync, что по сути значит "никаких очередей, выполняй всё сразу". Если вы хотите, чтобы очереди выполнялись в фоне, вам нужно изменить драйвер на один из подходящих вариантов. К примеру, если изменить на database и создать в БД нужные таблицы, то все задания будут помещаться в эти таблицы. Для их выполнения нужно либо запускать php artisan queue:work (одноразовое выполнение всех заданий), либо php artisan queue:work --daemon (демон, который будет висеть и мониторить добавление заданий в очередь), либо, лучше всего, использовать supervisor, который будет сам следить за тем, чтобы демон висел в памяти.

    Всё это легко гуглится, ключевые слова в предыдущем абзаце. Supervisor есть смысл использовать только на продакшене, но если не хотите заморачиватся с его установкой и настройкой, достаточно будет добавить в автозапуск только запуск демона очереди. Правда если по какой-то причини процесс вылетит - вам нужно будет вручную его перезагрузить.
    Ответ написан
    Комментировать
  • Что лучше изучать для использования с Laravel, React.js или Vue.js?

    alvvi
    @alvvi
    export default apathy;
    А хорошо ли интегрируется React.js с PHP фреймворком Laravel?
    И если да, то насколько ?

    Так же как с любым другим PHP фреймоврокм, нормально.

    Vue.js умеет все тоже самое что и React.js ?

    Да

    А в чем особенность React.js и Vue.js ?

    В доках обоих фреймворков прекрасно все описано.

    Когда я увидел чарты (график) производительности React.js я офигел ! Он очень мощный!
    А если использовать React.js с Laravel будут такие же результаты?

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

    И прошу вас или объяснить или же оставить ссылку про то, как же все таки происходит интеграция между двумя сторонами на том фреймворке (React or Vue) который предпочитаете.

    REST/GraphQL API, 1000 раз спрашивали уже

    Добавлю, что я знаю ES6, уже писал на Koa используя async/await, у меня достаточно хороший опыт/практика в разработке на NODE.JS.

    Тогда забудьте про PHP и его фреймворки. Зачем они вам, если REST для SPA прекрасно пишется на ноде?

    Прошу вас отвечать поподробнее на вопросы.

    Я бы может и ответил, если бы вы задали не самый банальный список вопросов в мире.
    Ответ написан
    Комментировать
  • Как правильно использовать и настроить Route в Laravel?

    @Kostik_1993
    Web Developer
    А нахрена ты сюда вообще переходишь?
    При переходе на этот адрес localhost/conlineltd/routes/web.php // Все мои рауты
    я получаю
    Fatal error: Uncaught Error: Class 'Illuminate\Support\Facades\Route' not found


    Судя по тупости предыдущего, возможно тебе следует зайти на /conlineltd/about
    При переходе на localhost/about я получаю 404 Not found!

    если это так, от тебе нужно менять настройки сервера или обернуть все твои роуты в группу с префиксом, что может стать временным костылем для вас
    Route::group(['prefix' => 'conlineltd'], function () {
    
    Route::post('/login',function(){
        return view('login');
    });
    
    Route::post('/register',function(){
        return view('register');
    });
    
    Route::post('/contact',function(){
        return view('contact');
    });
    
    Route::get('/about',function(){
        return view('about');
    });
    
    Route::get('/home', ['as' => 'home' , function(){
        return view('index');
    }]);
    });
    Ответ написан
    2 комментария
  • Какие основные принципы создания генератора админок?

    qonand
    @qonand
    Software Engineer
    что можно почитать о том как писать "универсальные" cms(админки), и\или их генераторы?

    Что бы писать универсальные программный компоненты (и не важно админки это или нет) необходимо иметь навыки в построении и разработке архитектуры. Такие навыки Вы не получите прочитав пару каких-то статей. Для этого нужно читать множество литературы по архитектуре, закреплять всю информацию на практике (а на этой уйдет не один месяц). Только после того как Вы усвоите все принципы Вы поймете как строить универсальные приложения и такие вопросы у Вас не будут возникать.

    Что нужно учитывать при их создании?

    На этот вопрос Вам никто не ответит, все зависит от конкретной ситуации.
    Ответ написан
    Комментировать
  • Стоит ли в Laravel увязывать пространства имен моделей с пространствами имен роутов при разработке API?

    YaRobot
    @YaRobot
    Senior PHP microservices 500px.com
    Не знаю если честно.
    Но как мне кажется, не стоит связывать.
    Да и зачем у вас категории в адресе на материал?
    Вы ведь API делаете. Пускайте в фильтре или заголовком.

    Допустим GET /api/v1/articles?fq['category']=1 (ну или в заголовке)
    Получаем все статьи из категории. Если без фильтра, то получаем вообще все статьи.
    Можно конечно и переработать структуру.
    Маршруты делайте как удобно, а модели и иже с ними, логично располагать.

    Мне все равно какой роут у нас в проекте. Если мне надо что то поменять, я и так знаю где искать.
    К примеру мне надо изменить модель статей (с переводом в лару).
    Domain/Model/Article/ArticleModel.php (это если домен делать, ну или оставить App )

    UPD:
    У нас принято в конце каждого файла, давать название, что он делает.
    App/Request/Article/ArticleRequest.php
    App/Model/Article/ArticleModel.php
    App/Model/Article/ArticleCategoryModel.php
    Ответ написан
    Комментировать
  • Где правильно трансформировать/форматировать данные перед их сохранением?

    @dragg
    По мне делаться это должно также в контроллерах, а потом уже подготовленные данные отправляешь куда тебе надо (в репозитории в твоем случае).
    Ответ написан
    Комментировать
  • Где правильно трансформировать/форматировать данные перед их сохранением?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Там, где лежит ваша бизнес логика. Если это контроллеры - то пусть останется там. Сервисы - значит там. Решения для "подготовки данных" не существует и существовать не может, так как из каждой части приложения данные приходят в разном виде.
    Ответ написан
    Комментировать
  • Есть ли модуль пользовательских уведомлений?

    DJZT
    @DJZT
    Laravel - code for you
    Заводите модель и таблицу с структурой
    Notifications
    -- id
    -- user_id
    -- message
    -- subject
    -- created_at
    -- updated_at

    Создаёте связь с User один ко многим

    Если это header а странице (Хотя не важно, главное выделить отдельную view для виджета уведомлений) делаете ComposerView (В доке в разделе Blade найдёте) для этого view в котором получаете текущего пользователя и делаете выборку $user->notifications (Можно добавить условиия различные $user->notifications()->where('read', 0)->get(), при этом поменять структуру) и передаёте эту коллекцию во view. А там дальше делает ешаблон по вкусу и вперёд.

    Это по перезагрузке будет только работать.

    Если в real-time надо - то там посложенее и подольше рассписывать. Стек - socket.io + laravel notifications + vue.js
    Ответ написан
    Комментировать
  • Есть ли модуль пользовательских уведомлений?

    zvermafia
    @zvermafia
    WebDev
    Знаю видео урок: Notifications: Database
    Ответ написан
    Комментировать
  • Структура Laravel проекта .. Куда ложить код?

    Картинки (дизайна), яваскипты и прочее в resources, веб-паком собираешь проект, билд в паблик скинется (по умолчанию уже вроде бы даже настроены правила сборки).
    Ответ написан
    Комментировать
  • Структура БД диалогов: как построить?

    @NataliaCh
    когда-то реализовывала простой обмен личными сообщениями на одном сайте.
    обошлась одной таблицей. Работает уже три года. Записей на данный момент около 100 тысяч
    Может мой вариант кому и пригодится.

    структура таблицы:
    mail_id
    mail_userid_from - id отправителя
    mail_userid_to - id получателя
    mail_text - текст сообщения
    mail_data - дата отправки
    mail_status - прочитано или нет получателем - чтобы выводить количество непрочитанных сообщений
    mail_delete_userfrom - удалено/нет отправителем
    mail_delete_userto - удалено/нет получателем

    последние два поля как раз отвечают за "мягкое удаление". По умолчанию там нули. Если юзер удалил сообщение, то выставляется 1 и сообщение данному юзеру не показывается. Теоретически, если в обоих полях по 1, то можно грохать из таблицы такие записи.
    Ответ написан
    Комментировать
  • Что такое полиморфные связи?

    greabock
    @greabock
    Могу
    Предположим, что у Вас есть комментарий, который может относится к посту(пользователя), а может относится к статье блога.
    тогда у Вас таблица может выглядеть примерно так:
    comment_id | parent_id | morph| comment_content | author

    где:
    comment_id - идентификатор самого коммента
    parent_id - идентификатор сущности к которой он относится
    morph - тип сущности, к которой относится этот комментарий.
    comment_content, author - тут я думаю понятно
    тогда записи могут выглядеть так:
    comment_id | parent_id | morph   | comment_content | author
    ---------------------------------------------------------------
      1        |   1       | post    | бла бла бла     | vasya
    ---------------------------------------------------------------
      2        |   1       | article | бла бла бла     | vasya
    ---------------------------------------------------------------

    при чем, несмтря на то, что parent_id у них одинаковый, в первом случае он относится к id в таблице post, а во втором к article
    Это и называется полиморфической связью.

    пример приведу на фреймворке laravel для php (но ORM там очень схож с Rails, так-что проблем возникнуть не должно)
    Модель комментария будет выглядеть приблизительно так:

    class Comment extends Eloquent {
    
     public function morph()
      {
         return $this->morphTo();
      }
    
    }

    а модели поста и статьи:

    class Post extends Eloquent {
    
      public function photos()
      {
        return $this->morphMany('post', 'morph');
      }
    
    }

    class Article extends Eloquent {
    
      public function photos()
      {
        return $this->morphMany('article', 'morph');
      }
    
    }

    вроде бы ничего не напутал...
    Ответ написан
    1 комментарий
  • Как построить запрос для вытягивание древовидной структуры типа Отзыв->Отзыв-ответ->Отзыв-ответ-на-ответ...->?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    выбирать надо все из базы, а потом раскидывать рекурсивной функцией по уровням.

    или гуглить что-то такое
    https://stackoverflow.com/questions/20215744/how-t...
    Ответ написан
    Комментировать
  • Как сделать такой фильтр на laravel 5.2 с сохранением состояния?

    @Zend_Arbitr
    Нужно просто правильно вывести пагинатор
    $myPaginator->appends(['sortBy'=>$sortBy,'filterBy' => $filterBy, 'perPage' =>$perPage, 'search'=> $search])
           ->setPath("Если надо здесь базовый uri")))
           ->render()

    Т.е. все эти данные будут угодить гет параметрами на каждой странице.
    Ответ написан
    Комментировать
  • Как решить проблему с валидатором unique при обновлении поста?

    amelihovv
    @amelihovv
    Фулстек веб разработчик
    $post = route('post'); // либо любым другим способом получите редактируемый пост
    return [
     'title' => [
      // остальные правила
      Rule::unique('posts', 'title')->ignore($post->id),
     ],
    ];
    Ответ написан
    Комментировать
  • Как правильно возвращать JSON с контроллеров Laravel для API приложения?

    @artemmityushov
    Оба предложенных варианта имеют свои плюсы и минусы. Добавил бы 3 вариант вывода через Formatters, мы его в основном используем, как минимум чтобы точно контролировать что приходит на апи.
    Ответ написан
    2 комментария
  • Как правильно возвращать JSON с контроллеров Laravel для API приложения?

    @Kostik_1993
    Web Developer
    1. Для того чтобы какие-то поля модели не отображались нужно использовать переменную hidden, с помощью нее мы указываем какие поля не должны отображаться в JSON ответе.
    protected $hidden = [
            'type_id',
            'created_at',
            'updated_at',
        ];

    2. У каждой модели вы должны указать свои поля которые должны быть скрыты
    protected $hidden = [
            'type_id',
            'created_at',
            'updated_at',
        ];

    3. Category::with('posts.comments')->get();
    4. Для этого также есть специальные переменные и методы.
    Также доступен такой метод
    public function getDateAttribute () {
            return date('Y-M-D', $this->date);
        }
    public function getUrlAttribute () {
            return url($this->slug);
        }

    этот метод выведет $post->date в нужном формате
    чтобы такой метод был доступен в json нужно указать его в
    protected $appends = [
            'url',
            'topic',
        ];
    Ответ написан
    Комментировать
  • Как правильно возвращать JSON с контроллеров Laravel для API приложения?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Использую laravel-fractal. В последней версии league/fractal, на основе которого и построен spatie/fractalistic, добавили тип primitive и все стало на свои места.

    Конечно, не обошлось без танцев с бубном: я сделал для нужных моделей трейт Transform, который добавляет метод toApi (хотя лучше бы назвал transform), берущий класс из переменной $transformer:
    87111fa7d0a346ff90c34a7c902d37b5.png
    И пришлось написать макрос для collection ларавельной, тоже toApi(). Хотя без обеих этих фич можно обойтись, используя fractal($items, $transformer).

    В остальном же полностью доволен.
    Ответ написан
    4 комментария
  • Как правильно сохранять дату последнего визита пользователя?

    sofcase
    @sofcase
    Веб-разработчик
    При каждом посещении (не авторизации, а именно обычный клик) проверяйте время последнего входа, если больше 5 минут, обновляйте поле на текущее время.

    Т.е. например есть поле last_activity_at. При просмотре страницы вы проверяете это поле, если между тек. временем и временем в поле больше 5 минут, тогда обновляйте поле на текущее время.

    Не объязательно проверять именно 5 минут, можете выбрать любой другой интервал, смотря какой вам нужен :)
    Ответ написан
    Комментировать