Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Unserialize issue when Mailable is queued #22727

Copy link
Copy link
Closed
@designvoid

Description

@designvoid
Issue body actions
  • Laravel Version: 5.5.25
  • PHP Version: 7.1.13
  • Database Driver & Version: MySQL v5.7.2

Description:

I have 3 separate servers (for reference):

  1. Application server with the application, Horizon and supervisord monitoring Horizon
  2. Redis server
  3. MySQL server

I have created a mailable:

class CourseVisible extends Mailable implements ShouldQueue
{
    use Queueable, SerializesModels;

    /**
     * The course instance.
     *
     * @var Course
     */
    public $course;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct(Course $course)
    {
        $course->load(['award:id,name']);
        $this->course = $course;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('emails.course.visible');
    }
}

Which is fired thusly:

    $course->visible = ($course->visible == true ? false : true);
    $course->save();
    Mail::to($course->notifiableUsers())->send(new CourseVisible($course));

When the queue is processed I am seeing the following errors in Horizon:

Undefined property: Illuminate\Contracts\Database\ModelIdentifier::$visible

Which is referring to this in the markdown view:

@if($course->visible == 1)

# The {{ $course->award->name }} {{ $course->title }} ({{ $course->year }}) course has been published to the website.

@else

# The {{ $course->award->name }} {{ $course->title }} ({{ $course->year }}) course has been unpublished from the website.

@endif

If I remove the ShouldQueue/Queueable portions and fire the email without queuing it works perfectly but as soon as I push it to the queue it fails.

I should also mention that I have another job that is fired by a model saving event that is queued and also passes a model instance in to a constructor and this works perfectly when queued and subsequently run.

Stack Trace

ErrorException: Undefined property: Illuminate\Contracts\Database\ModelIdentifier::$visible in /var/www/html/someurl.co.uk/prospectus/storage/framework/views/8b4dc10ef84d66c2b8ec041a4686f4e0c0892a82.php:3
	Stack trace:
	#0 /var/www/html/someurl.co.uk/prospectus/storage/framework/views/8b4dc10ef84d66c2b8ec041a4686f4e0c0892a82.php(3): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined prope...', '/var/www/html/d...', 3, Array)
	#1 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(43): include('/var/www/html/d...')
	#2 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('/var/www/html/d...', Array)
	#3 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/View.php(137): Illuminate\View\Engines\CompilerEngine->get('/var/www/html/d...', Array)
	#4 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/View.php(120): Illuminate\View\View->getContents()
	#5 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/View.php(85): Illuminate\View\View->renderContents()
	#6 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php(61): Illuminate\View\View->render()
	#7 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php(217): Illuminate\Mail\Markdown->render('emails.course.v...', Array)
	#8 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php(189): Illuminate\Mail\Mailable->buildMarkdownView()
	#9 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php(119): Illuminate\Mail\Mailable->buildView()
	#10 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php(52): Illuminate\Mail\Mailable->send(Object(Illuminate\Mail\Mailer))
	#11 [internal function]: Illuminate\Mail\SendQueuedMailable->handle(Object(Illuminate\Mail\Mailer))
	#12 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
	#13 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
	#14 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
	#15 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/Container.php(549): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
	#16 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(94): Illuminate\Container\Container->call(Array)
	#17 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(114): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(Illuminate\Mail\SendQueuedMailable))
	#18 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Mail\SendQueuedMailable))
	#19 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
	#20 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(49): Illuminate\Bus\Dispatcher->dispatchNow(Object(Illuminate\Mail\SendQueuedMailable), false)
	#21 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(76): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\RedisJob), Array)
	#22 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(320): Illuminate\Queue\Jobs\Job->fire()
	#23 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(270): Illuminate\Queue\Worker->process('redis', Object(Illuminate\Queue\Jobs\RedisJob), Object(Illuminate\Queue\WorkerOptions))
	#24 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(114): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\RedisJob), 'redis', Object(Illuminate\Queue\WorkerOptions))
	#25 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(101): Illuminate\Queue\Worker->daemon('redis', 'default', Object(Illuminate\Queue\WorkerOptions))
	#26 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(85): Illuminate\Queue\Console\WorkCommand->runWorker('redis', 'default')
	#27 [internal function]: Illuminate\Queue\Console\WorkCommand->handle()
	#28 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
	#29 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
	#30 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
	#31 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/Container.php(549): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
	#32 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Illuminate\Container\Container->call(Array)
	#33 /var/www/html/someurl.co.uk/prospectus/vendor/symfony/console/Command/Command.php(252): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
	#34 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Console/Command.php(167): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
	#35 /var/www/html/someurl.co.uk/prospectus/vendor/symfony/console/Application.php(936): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#36 /var/www/html/someurl.co.uk/prospectus/vendor/symfony/console/Application.php(240): Symfony\Component\Console\Application->doRunCommand(Object(Laravel\Horizon\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#37 /var/www/html/someurl.co.uk/prospectus/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#38 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Console/Application.php(88): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#39 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(121): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#40 /var/www/html/someurl.co.uk/prospectus/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#41 {main}
	Next ErrorException: Undefined property: Illuminate\Contracts\Database\ModelIdentifier::$visible (View: /var/www/html/someurl.co.uk/prospectus/resources/views/emails/course/visible.blade.php) in /var/www/html/someurl.co.uk/prospectus/storage/framework/views/8b4dc10ef84d66c2b8ec041a4686f4e0c0892a82.php:3
	Stack trace:
	#0 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(45): Illuminate\View\Engines\CompilerEngine->handleViewException(Object(ErrorException), 0)
	#1 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(59): Illuminate\View\Engines\PhpEngine->evaluatePath('/var/www/html/d...', Array)
	#2 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/View.php(137): Illuminate\View\Engines\CompilerEngine->get('/var/www/html/d...', Array)
	#3 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/View.php(120): Illuminate\View\View->getContents()
	#4 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/View/View.php(85): Illuminate\View\View->renderContents()
	#5 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php(61): Illuminate\View\View->render()
	#6 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php(217): Illuminate\Mail\Markdown->render('emails.course.v...', Array)
	#7 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php(189): Illuminate\Mail\Mailable->buildMarkdownView()
	#8 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/Mailable.php(119): Illuminate\Mail\Mailable->buildView()
	#9 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php(52): Illuminate\Mail\Mailable->send(Object(Illuminate\Mail\Mailer))
	#10 [internal function]: Illuminate\Mail\SendQueuedMailable->handle(Object(Illuminate\Mail\Mailer))
	#11 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
	#12 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
	#13 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
	#14 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/Container.php(549): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
	#15 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(94): Illuminate\Container\Container->call(Array)
	#16 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(114): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(Illuminate\Mail\SendQueuedMailable))
	#17 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Mail\SendQueuedMailable))
	#18 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
	#19 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(49): Illuminate\Bus\Dispatcher->dispatchNow(Object(Illuminate\Mail\SendQueuedMailable), false)
	#20 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(76): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\RedisJob), Array)
	#21 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(320): Illuminate\Queue\Jobs\Job->fire()
	#22 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(270): Illuminate\Queue\Worker->process('redis', Object(Illuminate\Queue\Jobs\RedisJob), Object(Illuminate\Queue\WorkerOptions))
	#23 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(114): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\RedisJob), 'redis', Object(Illuminate\Queue\WorkerOptions))
	#24 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(101): Illuminate\Queue\Worker->daemon('redis', 'default', Object(Illuminate\Queue\WorkerOptions))
	#25 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(85): Illuminate\Queue\Console\WorkCommand->runWorker('redis', 'default')
	#26 [internal function]: Illuminate\Queue\Console\WorkCommand->handle()
	#27 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
	#28 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
	#29 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
	#30 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Container/Container.php(549): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
	#31 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Illuminate\Container\Container->call(Array)
	#32 /var/www/html/someurl.co.uk/prospectus/vendor/symfony/console/Command/Command.php(252): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
	#33 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Console/Command.php(167): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
	#34 /var/www/html/someurl.co.uk/prospectus/vendor/symfony/console/Application.php(936): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#35 /var/www/html/someurl.co.uk/prospectus/vendor/symfony/console/Application.php(240): Symfony\Component\Console\Application->doRunCommand(Object(Laravel\Horizon\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#36 /var/www/html/someurl.co.uk/prospectus/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#37 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Console/Application.php(88): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#38 /var/www/html/someurl.co.uk/prospectus/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(121): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#39 /var/www/html/someurl.co.uk/prospectus/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
	#40 {main}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.