Laravel PHPUnit-用于多个连接的SQLite内存数据库

时间:2018-06-05 20:21:32

标签: laravel sqlite eloquent phpunit

我的应用程序必须使用两个数据库连接,名为mysql1和mysql2。 User模型位于第一个连接上,Department模型位于第二个连接上。

两者之间存在关系,一个部门属于多个用户。该关系使用存储在mysql2数据库中的department_user数据透视表。

这非常有用,除了测试之外。我使用PHPUnit并将DB_DRIVER设置为sqlite,将DB_DATABASE设置为:memory:这样测试运行得更快,并且不会碰到实际的MySQL数据库。

如何使内存数据库与多个连接一起使用?有没有办法给每个人一个独特的名字?

phpunit返回的错误是找不到表,这意味着它无法连接第二个数据库。

1 个答案:

答案 0 :(得分:0)

我遇到过类似的问题。这可能是,但我最终使用:memory:取消了我的SQLite数据库的本地文件。然后我就像你建议的那样,有机会给他们一个独特的名字。

此外,为了让每个数据库都能了解对方数据库,您必须在查询将要执行的问题上执行ATTACH DATABASE '$database' AS $name测试。起源于。并确保您没有在事务中执行该语句,否则它将无法正常工作。

在这里查看我的答案:belongsToMany relationship in Laravel across multiple databases。 我认为这与你正在寻找的东西截然不同。