Ich implementiere derzeit Laravel 5.3-Benachrichtigungen, die sehr gut funktionieren.
Im Moment verwende ich "email" alsBenachrichtigungskanal, aber ich möchte auch "Datenbank" hinzufügen. Ich verwende unterschiedliche Datenbanken / Verbindungen für Sprachen und möchte die Benachrichtigungen in einer zentralen Datenbank / Verbindung speichern.
Wie verwende ich eine andere Datenbankverbindung für Benachrichtigungen?
Ich habe bereits versucht, ein Benachrichtigungsmodell zu erstellen, aber das hat nicht funktioniert:
namespace App;
use IlluminateDatabaseEloquentModel;
class Notifications extends Model
{
protected $connection = "system";
}
Antworten:
3 für die Antwort № 1Hackish Lösung. Aber bewährt bei einer MongoDB-Verbindung.
Was muss geändert werden?
- Das
Notifiable
Merkmal - Das
DatabaseNotification
Modell- - Optional (ändert sich nichts, wenn Sie mysql verwenden)
HasNotifications
Merkmal - Modifiziere den
DatabaseNotificationCollection
. Dies ist nützlich für eine Verbindung, die keine MySQL-Verbindung ist
Schritt 1: Erstellen Sie einen benutzerdefinierten Notifiable
Merkmal
Kopieren Sie den Inhalt von IlluminateNotificationsNotifiable
und erstellen Sie eine neue Datei in Ihrem benutzerdefinierten Pfad ... sagen Sie AppOverridesNotificationsNotifiable
.
Ihre Datei enthält zwei Änderungen ... den Namespace und Sie müssen die RoutesNotifications
Merkmal, da wir es nicht überschreiben.
<?php
namespace AppOverridesNotifications;
use use IlluminateNotificationsRoutesNotifications;
trait Notifiable{
//The rest of the code remains
}
Schritt 2: Erstellen Sie einen benutzerdefinierten DatabaseNotification
Modell-
Befolgen Sie das gleiche Verfahren wie oben und kopieren Sie den Inhalt des IlluminateNotificationsDatabaseNotification
Datei auf den benutzerdefinierten Pfad, den wir oben erstellt haben ...AppOverridesNotificationDatabaseNotification
Dies ist ein Standard-Eloquent-Modell und der Verbindungswechsel findet hier tatsächlich statt
<?php
namespace AppOverridesNotification;
//Use this if on mongodb.otherwise use to IlluminateDatabaseEloquentModel
use JenssegersMongodbEloquentModel;
use IlluminateNotificationsDatabaseNotificationCollection;
class DatabaseNotification extends Model
{
protected $connection = "YOUR_CONNECTION_NAME_GOES HERE";
}
Ab diesem Punkt sollte dies funktionieren, wenn Sie sich mit einer MySQL-Verbindung befinden.
Um dies auszuprobieren, ändern Sie die Notifiable
Eigenschaft des zu verwendenden Benutzermodells AppOverridesNotificationsNotifiable
. Die Benachrichtigungen verwenden die angegebene Verbindung.
Benutzer von MongoDB müssen seit der Installation zusätzliche Schritte unternehmen populärster Fahrer Ich weiß es noch nicht Unterstützung MorphMany
Beziehungen welche für Laravel-Benachrichtigungen verwendet werden.
Da dies nicht die gestellte Frage ist, lassen wir es dabei :-)