Skip to content

Commit 9bebf22

Browse files
authored
Merge pull request #37 from kirschbaum-development/fix-boot-mailable-fresh-migration-bug
Add try/catch to mailable boot
2 parents c0a1c77 + 1311606 commit 9bebf22

File tree

1 file changed

+32
-24
lines changed

1 file changed

+32
-24
lines changed

src/Traits/Mailable.php

+32-24
Original file line numberDiff line numberDiff line change
@@ -15,35 +15,43 @@ trait Mailable
1515
*/
1616
public static function bootMailable()
1717
{
18-
NovaMailTemplate::whereHas('events', function ($query) {
19-
$query->whereModel(get_called_class());
20-
})->each(function (NovaMailTemplate $novaMailTemplate) {
21-
$novaMailTemplate->events
22-
->filter(function ($event) {
23-
return collect(config('nova_mail.eventables'))->contains($event->model);
24-
})
25-
->each(function ($event) use ($novaMailTemplate) {
26-
if ($event->column) {
27-
$event->model::updated(function ($model) use ($novaMailTemplate, $event) {
28-
if ($model->isDirty($event->column)) {
29-
$value = is_bool($model->{$event->column})
30-
? filter_var($event->value, FILTER_VALIDATE_BOOLEAN)
31-
: $event->value;
18+
try {
19+
NovaMailTemplate::whereHas('events', function ($query) {
20+
$query->whereModel(get_called_class());
21+
})->each(function (NovaMailTemplate $novaMailTemplate) {
22+
$novaMailTemplate->events
23+
->filter(function ($event) {
24+
return collect(config('nova_mail.eventables'))->contains($event->model);
25+
})
26+
->each(function ($event) use ($novaMailTemplate) {
27+
if ($event->column) {
28+
$event->model::updated(function ($model) use ($novaMailTemplate, $event) {
29+
if ($model->isDirty($event->column)) {
30+
$value = is_bool($model->{$event->column})
31+
? filter_var($event->value, FILTER_VALIDATE_BOOLEAN)
32+
: $event->value;
3233

33-
if (is_null($event->value) || $model->{$event->column} === $value) {
34-
$model->sendMailTemplate($novaMailTemplate, $event);
34+
if (is_null($event->value) || $model->{$event->column} === $value) {
35+
$model->sendMailTemplate($novaMailTemplate, $event);
36+
}
3537
}
36-
}
37-
});
38+
});
3839

39-
return;
40-
}
40+
return;
41+
}
4142

42-
$event->model::{$event->name}(function ($model) use ($novaMailTemplate, $event) {
43-
$model->sendMailTemplate($novaMailTemplate, $event);
43+
$event->model::{$event->name}(function ($model) use ($novaMailTemplate, $event) {
44+
$model->sendMailTemplate($novaMailTemplate, $event);
45+
});
4446
});
45-
});
46-
});
47+
});
48+
} catch (\Illuminate\Database\QueryException $exception) {
49+
\Log::info(
50+
'Could not bind NovaMailEvents. '
51+
. 'NovaMail tables might not have migrated yet, '
52+
. 'typical when running fresh migrations during testing or local development.'
53+
);
54+
}
4755
}
4856

4957
/**

0 commit comments

Comments
 (0)