定制多对多关系

时间:2017-12-19 19:11:45

标签: laravel laravel-5

我有3个实体:

  • 机构
  • 地址

机构&分支将有许多地址,因此为了不创建两个子模型来存储每个实体的地址,我想创建一个数据透视表,它将这些列作为主键:entity_id,address_id,entity_name。通过这种方法,我将存储机构和分支的所有地址的关系。

这是我在entities_addresses透视表中的代码

Schema::create('entities_addresses', function (Blueprint $table) {
        $table->integer('entity_id')->unsigned();
        $table->integer('address_id')->unsigned();
        $table->string('model_name', 50);
        $table->primary(['entity_id','address_id','model_name']);

接下来,在地址模型中,我有以下代码:

public function institutions()
    {
        return $this->belongsToMany(Institution::class, 'entities_addresses', 'entity_id', 'address_id');
    }

接下来,在Institution模型中,我有以下代码

public function buildings()

    {
        return $this->hasMany(Building::class);
    }

我相信我需要在其他地方添加" custom"关系,因为我现在收到此错误:SQLSTATE [42S22]:找不到列:1054未知列' addresses.institution_id'

所以,我的问题是:

  1. 我在哪里必须指定自定义关系?
  2. 这是创建中间模型的更好方法吗?
  3. 我必须自定义附加和分离方法的用途吗?我将在哪个地方做这件事?
  4. 此致

0 个答案:

没有答案