【问题标题】:Is it possible multi-database call for YII2 or LARAVEL 5是否可以对 YII2 或 LARAVEL 5 进行多数据库调用
【发布时间】:2015-08-14 02:55:54
【问题描述】:

我正在使用 YII 框架(MySql 数据库引擎)开发一个大项目。我正准备通过迁移到 YII2 或 Laravel 5 来继续开发项目的其余部分。 在这个我的问题中,我不是在问哪个框架更好,因为很明显没有明确的答案,如果你自己尝试两个框架会更好。 因为其余部分与归档数据和通过归档生成报告有关,所以对我来说非常重要的问题是这些框架中的某个是否允许在一个查询中调用多数据库 - 如下示例:

SELECT * FROM database01.table1 t1, database02.table2 t2 WHERE t1.id1=t2.id2;

如果这是可能的,我更喜欢它可以在没有 ORM 的情况下完成 从我所做的轻量级研究中,我了解到对于 YII2 来说这是可能的,但只能通过使用 Active Records - 它是 ORM 实现。可悲的是,但对于 LARAVEL 5,我找不到答案——我感觉它可以,但只是通过查看一些样本来感受。 所以请给我你的建议! 还有一次——我不是在征求哪个框架更好的建议,因为我正准备亲自测试它们。我对 YII 很满意,当然我会扩展到 YII2,但是我为 LARVEL 阅读的内容也很棒,我只是喜欢选择第一个,然后学习并尝试完成当前的项目。 提前致谢!

【问题讨论】:

  • Orm 是建立在这样的 sql 语句之上的,所以在没有 orm 的情况下总是可以做到的。
  • 我不确定你是否在谈论 Laravel 中的关系? laravel.com/docs/5.0/eloquent#relationships
  • 可能这也是一个答案,但也是 ORM - 对吧?
  • @Robert Harvey 原则上你是对的,但你能告诉我如何在 YII2 上完成它 - 数据库配置文件的一部分,主要是如何在 DAO 行为中调用你的查询?
  • 点击 ceejayjoyz 在他的回答中提供的链接

标签: php laravel-5 yii2


【解决方案1】:

Laravel 允许 direct database queries

例如,$results = DB::select('SELECT * FROM database01.table1 t1, database02.table2 t2 WHERE t1.id1=t2.id2'); 将执行您的示例查询并为您提供一组结果。

【讨论】:

  • 你能告诉我这个例子的部分 DB-links 配置吗?
  • @KanchoIliev 这将使用config/database.php 中的凭据。您需要一个能够访问这两个数据库的 MySQL 用户。由于您在查询本身中明确说明要连接到哪个数据库,database.connections.mysql.database 的值将无关紧要 - 但您可以将其设置为最常访问的数据库,这样您就可以对它执行SELECT * FROM table1。跨度>
  • @ceejayouz 这是我之前看过的一篇文章——它让我觉得在 Laravel 中它是可能的。但是使用命名连接的说明让我很失望,因为我认为他们必须这样做——为此我需要 Laravel 开发人员的建议。如果您使用过它 - 这是我的答案。非常感谢你!
猜你喜欢
  • 2017-02-23
  • 2022-06-24
  • 2012-04-25
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
相关资源
最近更新 更多