【问题标题】:When I update any column in the 'DB_1.users' table at that time i want to change the same column in the 'DB_2.all_users' table当我当时更新“DB_1.users”表中的任何列时,我想更改“DB_2.all_users”表中的同一列
【发布时间】:2019-09-26 08:24:29
【问题描述】:

我有两个名为“DB_1.users”和“DB_2.all_users”的表具有相同的列。
这两个表位于不同的数据库中。
当我当时更新“DB_1.users”表中的任何列时,我想更改“DB_2.all_users”表中的同一列。 有什么最简单的方法吗?

使用 laravel 5.8

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    恕我直言,最简单的方法是在您的应用程序中创建两个不同的模型,并在 config/database.php 文件中创建两个不同的数据库连接。

    如果您查看Eloquent documentation,您会发现模型可以设置特定的数据库连接。

    数据库连接

    默认情况下,所有 Eloquent 模型都将使用为您的应用程序配置的默认数据库连接。如果您想为模型指定不同的连接,请使用 $connection 属性:

    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Flight extends Model
    {
       /**
        * The connection name for the model.
        *
        * @var string
        */
       protected $connection = 'connection-name';
    }
    

    通过这种方式,您可以为Model1 设置默认连接,为Model2 设置第二个数据库连接。

    也许为了减少你的代码冗余,你可以为 CRUD 操作创建一个帮助器,它返回一个包含两个模型的数组,特别是如果对第一个对象进行的每个操作也必须对第二个对象进行。

    【讨论】:

    • 同意这一点,但在你的情况下,我每次在凝乳操作时都必须使用那个辅助函数,这在我看来并不好。你还有其他方法吗?
    • 为什么不好?如果您必须在两个模型中执行相同的操作,辅助函数或服务是避免冗余的最佳方法...否则您可以为两个模型创建观察者,如果模型 A 得到更新,观察者更新模型 B 反之亦然反之
    • 不客气!如果您认为我的回答是正确的,请采纳!
    猜你喜欢
    • 1970-01-01
    • 2014-04-17
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多