所以我設置了 Laravel 通知,它工作得很好。但是,我已經擴展了遷移以包含一個額外的 id 字段:$table->integer('project_id')->unsigned()->nullable()->index();問題是,我不知道如何實際設置該project_id字段。我的通知如下所示:<?phpnamespace App\Notifications\Project;use App\Models\Project;use App\Notifications\Notification;class ReadyNotification extends Notification{ protected $project; public function __construct(Project $project) { $this->project = $project; } public function toArray($notifiable) { return [ 'project_id' => $this->project->id, 'name' => $this->project->full_name, 'updated_at' => $this->project->updated_at, 'action' => 'project-ready' ]; }}所以是的,我可以將它存儲在數據中,但是如果我想通過“項目”而不是“用戶”或“通知”專門清除通知怎么辦。data例如,如果他們刪除項目,我希望清除它的通知,但除非我在列上進行一些通配符搜索,否則無法訪問它。那么無論如何要project_id在通知中插入它嗎?
1 回答

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
您可以創建一個觀察者來自動更新該字段。
NotificationObserver.php
namespace App\Observers;
class NotificationObserver
{
public function creating($notification)
{
$notification->project_id = $notification->data['project_id'] ?? 0;
}
}
事件服務提供者.php
use App\Observers\NotificationObserver;
use Illuminate\Notifications\DatabaseNotification;
class EventServiceProvider extends ServiceProvider
{
public function boot()
{
parent::boot();
DatabaseNotification::observe(NotificationObserver::class);
}
}
您應該能夠使用默認模型訪問表以執行操作。
DatabaseNotification::where('project_id', 11)->delete();
- 1 回答
- 0 關注
- 190 瀏覽
添加回答
舉報
0/150
提交
取消