Laravel 5.7: класс setQueue не существует - PullRequest
0 голосов
/ 26 октября 2018

Получение этой ошибки при попытке отправить простое электронное письмо:

Класс setQueue не существует в vendor / laravel / framework / src / Illuminate / Container / Container.php: 779)

Вот код, вызывающий его:

Mail::raw($data['email_body'], function (Message $message) use ($email_or_url, $data) {
    $message->to($email_or_url);
    $message->subject($data['email_subject']);
});

Почему Laravel пытается поставить это в очередь и как мне его остановить?

Ответы [ 6 ]

0 голосов
/ 02 января 2019

Мое решение было снова valet install, так как я получил ошибку после запуска brew update/upgrade

связанные детали: PHP 7.3.0 (cli) (built: Dec 7 2018 11:00:11) ( NTS )

0 голосов
/ 27 декабря 2018

Что я обнаружил в своем исследовании решения, так это то, что в моем случае речь идет не о версии php (я даже переустанавливал все и менял поставщиков серверов из-за ответов laracasts), но это был код, вызванныйошибка, и я знаю, потому что я вернулся к предыдущей фиксации, и она работала нормально.

В моем случае это было потому, что у меня была транзакция до отправки электронного письма

$suma = $user->transactionsAsUser->filter(
            function ($transaction) {
                return $transaction->status == 'successful' || $transaction->kanjea_ammount < 0;
            }
        )->sum('kanjea_ammount');
        $user->kanjea_balance = $suma;
        $user->save();
\Mail::to($user->email)->send(new \App\Mail\JustRegistered($user));

Когда я удалил этот фрагмент перед последней строкой, он просто работал нормально.Даже с использованием PHP 7.3.

Кстати.эта проблема не возникает в моей локальной среде w7 + xampp, а только dokku

0 голосов
/ 21 декабря 2018

Я также сталкиваюсь с той же проблемой в MacBook Pro. Для пользователей MacBook просто используйте команду

"перезагрузка камердинера" ​​

В моем случае это работает сейчас. Попробуйте перезапустить свой сервер, который может быть полезным.

Примечание: я использую PHP 7.3. *

0 голосов
/ 20 декабря 2018

ошибка в проекте laravel для этой проблемы.https://github.com/laravel/framework/issues/26819

Оказалось, проблема в php.Laravel исправил его, поэтому у вас есть 2 варианта исправления.Используйте версию патча и надейтесь, что в других местах php 7.3 не сломает laravel, или понизьте ваш проект до 7.2

0 голосов
/ 12 декабря 2018

это происходит со мной, потому что я запускаю php 7.3, когда я работаю на php 7.2.13, он работает, и я также изменяю переменную QUEUE_DRIVER в .env и config / queue.php

0 голосов
/ 26 октября 2018

Убедитесь, что вы переименовали переменную среды QUEUE_DRIVER в QUEUE_CONNECTION в config/queue.php и .env - она ​​была переименована в 5.7

https://laracasts.com/discuss/channels/laravel/trying-to-send-email-class-setqueue-does-not-exist

Почему Laravel пытается поставить это в очередь и как мне его остановить?

Он не пытается поставить в очередь это электронное письмо, но MailServiceProvider все еще регистрирует драйвер очереди (длякогда электронная почта реализует интерфейс ShouldQueue).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...