我正在try 创建一个模型,并在Laravel 4.2中迁移该模型.我所有的Laravel应用程序都使用同一个名为laravel的MySQL数据库.然而,我们还有另一个数据库(在同一台服务器上),名为main_db,其中包含一个users表,我想用它作为laravel数据库中我自己的laravel_users表中一些外键的来源.

根据Laravel文档,我会用以下代码指定一个外键:

$table->foreign('user_id')->references('id')->on('users');

但我相信这是假设'users'表存在于同一个数据库中.

Is it possible to do trans-database foreign keys in Laravel? Would I have to first create a model that uses the users table from main_db? And is it possible to set up two different database connections in the app/config/database.php?

推荐答案

实际上,跨数据库外键与Laravel没有太大关系.真正的问题是数据库是否支持它.MySQL(至少在InnoDB中)确实支持跨多个数据库的外键约束.只需使用点符号指定数据库:db.table.

Regarding the Laravel schema builder, this should work:

$table->foreign('user_id')->references('id')->on('main_db.users');
//                                                ^^^^^^^

如果出现错误,请判断列类型是否相同.

Laravel相关问答推荐

try 编写一个函数,如果产品存在,则无法删除特定类别

在没有lang/*.json文件的情况下在Laravel项目中实现多语言支持

Laravel Eloquent查询与集合优化

Laravel:在行的子集上同步多对多

Laravel 9 上的数组差异助手

laravel 如何验证跨越午夜的两个值之间的时间(15:00 > 时间 > 01:00)

不能在 laravel 中使用控制器名称,必须使用命名空间

Laravel 如何处理来自浏览器的 PUT 请求?

Laravel 合集日期比较

我怎样才能了解更多关于我的 Laravel 排队作业(job)失败的原因?

Laravel 5.4 LengthAwarePaginator

Laravel whereDoesntHave() - 多个 OR 条件

导航栏品牌中的 Laravel 动态页面标题

Laravel 中的填充方法不起作用?

Laravel League/flysystem 使用 AWS S3 获取文件 URL

Laravel 验证:数字和整数之间的区别?

找不到框laravel/homestead

Laravel 表:只能有一个自动列,并且必须定义为键

Laravel 从公共删除目录

Laravel or where