我創造了我傳遞了一個模型來通知:未將關係傳遞給通知?
class NewMessage extends Notification implements ShouldQueue
{
use Queueable;
protected $message;
public function __construct(Message $message)
{
$this->message = $message;
}
public function via()
{
return ['database'];
}
public function toArray()
{
Log::info($this->message);
return [
'message_id' => $this->message->id,
];
}
}
這是我如何打電話通知:
$message = Message::where('user_id', Auth::user()->id)
->where('message_id', $message_id)
->with('topic')
->get();
$user->notify(new NewMessage($message));
的問題是,當通知打印日誌(Log::info($this->message);
) ,topic
關係不顯示。
然而,我發現,如果我改變toArray()
功能在nofitication類此,它打印出罰款:
public function toArray()
{
$this->message->topic;
Log::info($this->message);
return [
'message_id' => $this->message->id,
];
}
爲什麼?我該如何解決?
這有些古怪。 'with'確實根據文檔進行熱切加載,'load'進行延遲加載。你可以用('topic')''加載('topic')'而不是' - >嗎?看起來像'toArray'不尊重渴望加載的關係。 –
剛試過' - >加載('topic')'。同樣的問題。 :/ – applestopears
事實上,laravel給出了一個集合,所以你需要使用集合而不是簡單的數組 – lewis4u