/ / Laravel change通知テーブルの接続 - 通知、データベース接続、laravel-5.3

Laravel change通知テーブルの接続 - 通知、データベース接続、laravel-5.3

私はLaravel 5.3 Notificationsを実装していますが、これは非常にうまく動作しています。

現時点で私は "電子メール"を通知チャンネルを追加したいのですが、 "データベース"も追加します。私は言語のために異なるデータベース/接続を使用しており、通知を中央データベース/ Connectionに保存したい。

通知用に別のデータベース接続を使用するにはどうすればよいですか?

私はすでにNotificationsモデルを作成しようとしましたが、うまくいかなかった:

namespace App;

use IlluminateDatabaseEloquentModel;

class Notifications extends Model
{
protected $connection = "system";
}

回答:

回答№1の場合は3

Hackishソリューション。しかし、MongoDB接続で試してテストしました。

何を修正する必要がありますか。

  1. Notifiable 形質
  2. DatabaseNotification モデル
  3. オプションで(mysqlを使用している場合は何も変わりません)、 HasNotifications 形質
  4. 変更する 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通知に使用されます。

それは尋ねられる質問ではないので、私たちはそれを次のように置いています:-)