【问题标题】:is it possible to define relationships in Eloquent models if tables are in different databases?如果表在不同的数据库中,是否可以在 Eloquent 模型中定义关系?
【发布时间】:2019-10-24 09:28:46
【问题描述】:

有两个表在不同的数据库中。假设其中一个是用户,另一个是汽车。 Cars 中有“user_id”列。是否可以为这两个表(汽车和用户)创建模型,以便在查询用户时可以急切地加载关系? 像这样:

User::find(3)->with('cars')->get();

【问题讨论】:

    标签: php database laravel eloquent


    【解决方案1】:

    不可能走捷径。您可以通过设置不同的连接来做到这一点,但这不符合关系数据库策略。

    【讨论】:

      【解决方案2】:

      您可以对支持此功能的数据库执行此操作,例如 Microsoft SQL Server 作为驱动程序。完成这项工作所需要做的就是在配置中添加多个连接(数据库)并在模型中引用它们:

      protected $connection = 'database2';
      

      【讨论】:

        【解决方案3】:

        实际上我试过了,结果发现 laravel 在这种情况下效果很好。您只需要在模型上指定连接,并像往常一样定义关系。关键是当你使用 Model::with('relation') 时,laravel 不会创建一个大查询。首先它查询根模型,然后是子模型,然后在代码中匹配它们。虽然我觉得很奇怪,因为它必须降低性能,因为我们有两个查询而不是一个,然后它处理结果,尽管它适用于跨数据库关系。

        【讨论】:

          猜你喜欢
          • 2015-08-03
          • 1970-01-01
          • 1970-01-01
          • 2021-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-16
          • 2017-02-22
          相关资源
          最近更新 更多