когда я пытаюсь отправить задание с контроллера, оно работает.
однако, когда я делаю то же самое из репозитория, возникает ошибка.
<?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 () в CreateOrderRepo, поэтому использовать ее в контексте $this не получится.
use Illuminate\Foundation\Bus\DispatchesJobs признак.






Добавьте признак для отправки заданий:
use Illuminate\Foundation\Bus\DispatchesJobs;
чем это отличается от app('Illuminate\Contracts\Bus\Dispatcher')->dispatch($job);? я обычно использую это ?
Это просто длиннее, не более того. Обычно вы предпочитаете dispatch($job) или Job::dispatch(), а не app('Illuminate\Contracts\Bus\Dispatcher')->dispatch($job).
изменить это
$this->dispatch($slackJob);
к этому
dispatch($slackJob);
Включение трейта работает так же, как и метод отправки в ваш класс, но я всегда предпочитаю видеть меньше кода, особенно когда все еще очень ясно, что происходит, хотя личные предпочтения.
Как dispatch($job) меньше кода или менее понятен, чем Job::dispatch()? Я думаю, что все в порядке, просто личные предпочтения. Но я не вижу, чтобы ни один из них был более кодом или менее понятным.
Если дополнительный оператор использования не квалифицируется как «дополнительный код», я не знаю, как вам помочь, но спасибо, что подтвердили мою точку зрения о том, что это личное предпочтение.
Да, имеет смысл, одно целое утверждение! Вау, гораздо больше кода, имеет смысл!
Рад, что мы смогли согласиться, а также спасибо за то, что вы отметили, что ваши личные предпочтения отличаются от моих личных предпочтений. Это просто личные предпочтения. Я тоже не фанат лишних комментариев, но думаю, что это тоже личное предпочтение.
использовать вспомогательную функцию dispatch ()