/ / Laravel change Verbindung für Benachrichtigungstabelle - Benachrichtigungen, Datenbankverbindung, Laravel-5.3

Laravel change Verbindung für Notifications-Tabelle - Benachrichtigungen, Datenbank-Verbindung, Laravel-5.3

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 № 1

Hackish Lösung. Aber bewährt bei einer MongoDB-Verbindung.

Was muss geändert werden?

  1. Das Notifiable Merkmal
  2. Das DatabaseNotification Modell-
  3. Optional (ändert sich nichts, wenn Sie mysql verwenden) HasNotifications Merkmal
  4. 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 :-)