laravel-5 - Laravel 5 多连接中的多态

标签 laravel-5 polymorphism

我正在尝试在连接的多个数据库上设置多态关系。

假设我有

  • 数据库 A,表用户(ID、电子邮件、密码、userable_id、 用户可用类型)
  • 数据库 B,表公司(ID、姓名、地址、电话)

在每个用户和公司模型上,我还设置了每个连接:

/* Database A */
protected $connection = 'database_a';

/* Database B */
protected $connection = 'database_b';

对于关系

/* Database A (User model) */
public function userable()
{
    return $this->morphTo();
}

/* Database B (Company Model) */
public function user()
{
    return $this->morphMany('user','userable');
}

在我的 AppServiceProvider.php 中,我对用户和供应商模型进行 morphMap 处理:

Relation::morphMap([
    'user' => \App\Models\V1\Shared\User::class,
    'vendor' => \App\Models\V1\Training\Vendor::class       
]);

除非我设置与连接的用户关系,否则此代码将不起作用:

public function userable()
{
    return $this->setConnection('database_b')->morphTo();
}

如果我想添加更多用户类型并且必须使用新数据库,如何使用适当的数据库/如何使 laravel 在 morphTo 中自动检测连接而无需使用 setConnection()?

最佳答案

这已经晚了,但我最近遇到了同样的问题,我现在使用 Laravel 5.5,我只需要使用

protected $connection = 'db_names' 

对于属于不同数据库的两个模型 - 这实际上很有魅力。

我不必使用

$this->setConnection('database_b')->morphTo(), I just used $this->morphTo() :)

关于laravel-5 - Laravel 5 多连接中的多态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37581879/

相关文章:

java - 椭圆形多态性

laravel - 如何在 Laravel 中通过自定义查询构建器使用预加载

postgresql - Laravel postgres current_timestamp

c++ - 模板对象数组

java - Hibernate 中的隐式多态与显式多态

C#基础多态问题

c# - 为什么这个多态的 C# 代码会打印出它的作用?

php - Laravel 5 无法打开所需的 bootstrap/../vendor/autoload.php

php - Laravel 包注册异常处理器

php - Laravel 5.5 有条件地添加验证规则