【发布时间】:2019-10-24 09:28:46
【问题描述】:
有两个表在不同的数据库中。假设其中一个是用户,另一个是汽车。 Cars 中有“user_id”列。是否可以为这两个表(汽车和用户)创建模型,以便在查询用户时可以急切地加载关系? 像这样:
User::find(3)->with('cars')->get();
【问题讨论】:
标签: php database laravel eloquent
有两个表在不同的数据库中。假设其中一个是用户,另一个是汽车。 Cars 中有“user_id”列。是否可以为这两个表(汽车和用户)创建模型,以便在查询用户时可以急切地加载关系? 像这样:
User::find(3)->with('cars')->get();
【问题讨论】:
标签: php database laravel eloquent
不可能走捷径。您可以通过设置不同的连接来做到这一点,但这不符合关系数据库策略。
【讨论】:
您可以对支持此功能的数据库执行此操作,例如 Microsoft SQL Server 作为驱动程序。完成这项工作所需要做的就是在配置中添加多个连接(数据库)并在模型中引用它们:
protected $connection = 'database2';
【讨论】:
实际上我试过了,结果发现 laravel 在这种情况下效果很好。您只需要在模型上指定连接,并像往常一样定义关系。关键是当你使用 Model::with('relation') 时,laravel 不会创建一个大查询。首先它查询根模型,然后是子模型,然后在代码中匹配它们。虽然我觉得很奇怪,因为它必须降低性能,因为我们有两个查询而不是一个,然后它处理结果,尽管它适用于跨数据库关系。
【讨论】: