Laravel - отправка задания, не работающего из репозитория

когда я пытаюсь отправить задание с контроллера, оно работает.

однако, когда я делаю то же самое из репозитория, возникает ошибка.

<?php

namespace App\Repositories\Retailer;

use App\Jobs\SlackJob;
use App\Traits\CreateOrderTrait;

class CreateOrderRepo
{
   use CreateOrderTrait;

   public function create($store_id)
     {
        $slackJob = new SlackJob("Test", 1);
        $slackJob = $slackJob->onQueue('high');
        $this->dispatch($slackJob);
     }
}

Ошибка:

Call to undefined method App\Repositories\Retailer\CreateOrderRepo::dispatch()

использовать вспомогательную функцию dispatch ()

Jignesh Joisar 12.10.2018 16:16

Я предполагаю, что у вас нет функции dispatch () в CreateOrderRepo, поэтому использовать ее в контексте $this не получится.

aynber 12.10.2018 16:17
use Illuminate\Foundation\Bus\DispatchesJobs признак.
thefallen 12.10.2018 16:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
3
1 594
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Добавьте признак для отправки заданий:

use Illuminate\Foundation\Bus\DispatchesJobs;

чем это отличается от app('Illuminate\Contracts\Bus\Dispatcher')->dispatch($job);? я обычно использую это ?

abbood 12.10.2018 16:50

Это просто длиннее, не более того. Обычно вы предпочитаете dispatch($job) или Job::dispatch(), а не app('Illuminate\Contracts\Bus\Dispatcher')->dispatch($job).

Paras 12.10.2018 17:15

изменить это

$this->dispatch($slackJob);

к этому

dispatch($slackJob);

Включение трейта работает так же, как и метод отправки в ваш класс, но я всегда предпочитаю видеть меньше кода, особенно когда все еще очень ясно, что происходит, хотя личные предпочтения.

wheelmaker 12.10.2018 16:31

Как dispatch($job) меньше кода или менее понятен, чем Job::dispatch()? Я думаю, что все в порядке, просто личные предпочтения. Но я не вижу, чтобы ни один из них был более кодом или менее понятным.

Paras 12.10.2018 17:16

Если дополнительный оператор использования не квалифицируется как «дополнительный код», я не знаю, как вам помочь, но спасибо, что подтвердили мою точку зрения о том, что это личное предпочтение.

wheelmaker 12.10.2018 17:28

Да, имеет смысл, одно целое утверждение! Вау, гораздо больше кода, имеет смысл!

Paras 12.10.2018 19:00

Рад, что мы смогли согласиться, а также спасибо за то, что вы отметили, что ваши личные предпочтения отличаются от моих личных предпочтений. Это просто личные предпочтения. Я тоже не фанат лишних комментариев, но думаю, что это тоже личное предпочтение.

wheelmaker 12.10.2018 19:01

Другие вопросы по теме