私はLaravel 5.3 Notificationsを実装していますが、これは非常にうまく動作しています。
現時点で私は "電子メール"を通知チャンネルを追加したいのですが、 "データベース"も追加します。私は言語のために異なるデータベース/接続を使用しており、通知を中央データベース/ Connectionに保存したい。
通知用に別のデータベース接続を使用するにはどうすればよいですか?
私はすでにNotificationsモデルを作成しようとしましたが、うまくいかなかった:
namespace App;
use IlluminateDatabaseEloquentModel;
class Notifications extends Model
{
protected $connection = "system";
}
回答:
回答№1の場合は3Hackishソリューション。しかし、MongoDB接続で試してテストしました。
何を修正する必要がありますか。
- ザ
Notifiable
形質 - ザ
DatabaseNotification
モデル - オプションで(mysqlを使用している場合は何も変わりません)、
HasNotifications
形質 - 変更する
DatabaseNotificationCollection
.Againこれはmysql以外の接続に便利です
ステップ1:カスタムを作成する Notifiable
特性
内容をからコピーする IlluminateNotificationsNotifiable
あなたのカスタムパスに新しいファイルを作成する... say AppOverridesNotificationsNotifiable
.
ファイルには2つの変更があります。名前空間と RoutesNotifications
我々はそれをコピーしていないので、特性。
<?php
namespace AppOverridesNotifications;
use use IlluminateNotificationsRoutesNotifications;
trait Notifiable{
//The rest of the code remains
}
ステップ2:カスタムを作成する DatabaseNotification
モデル
上記と同じ手順で、 IlluminateNotificationsDatabaseNotification
上記で作成したカスタムパスにファイルを...AppOverridesNotificationDatabaseNotification
これは標準的なEloquentモデルであり、接続の変更は実際にここで行われます
<?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";
}
この時点で、あなたがmysql接続している場合、これはうまくいくはずです。
これを試すには、 Notifiable
使用するユーザーモデルの特性 AppOverridesNotificationsNotifiable
。通知では、指定した接続が使用されます。
MongoDBのユーザーは、 最も人気のあるドライバー 私はまだ知りません サポート MorphMany
関係 これらはLaravel通知に使用されます。
それは尋ねられる質問ではないので、私たちはそれを次のように置いています:-)