从多态表ID

时间:2018-05-20 05:17:05

标签: php laravel postgresql laravel-5.1

使用Laravel 5.1,如何从与多态表的Dialogs关系中获取M:M

加载tasks时,会加载相应的npctasksnpcs之间的这种关系是多态关系。

所以我创建了另一个M:Mdialog_npcseventsmorphable,它将dialog_id链接到npcs_events_morphable_id表上的npcs_events_morphable,但它没有加载{ {1}}。

dialogs

npcs_events_morphable:

$task = Task::findOrFail(1);

dialog_npcseventsmorphable:

 id | npc_id | morphable_id | morphable_type |     created_at      |     updated_at      |    published_at     
----+--------+--------------+----------------+---------------------+---------------------+---------------------
  1 |      1 |            1 | App\Task       | 2018-05-20 04:45:24 | 2018-05-20 04:45:24 | 2018-05-20 04:45:24
  2 |      2 |            1 | App\Activity   | 2018-05-20 04:45:24 | 2018-05-20 04:45:24 | 2018-05-20 04:45:24
  3 |      3 |            1 | App\Battle     | 2018-05-20 04:45:24 | 2018-05-20 04:45:24 | 2018-05-20 04:45:24

任务:

 dialog_id | npcs_events_morphable_id (<-- id on 'npcs_events_morphable' table)
-----------+--------------------------
         1 |                        1
         2 |                        1
         3 |                        2
         4 |                        2
         5 |                        3
         6 |                        3
         7 |                        3
         8 |                        3
         9 |                        3

NPC:

class Task extends BaseModel
{
    protected $with = ['npcs', ...];

    public function npcs()
    {
        return $this->morphToMany('App\Npc', 'morphable', 'npcs_events_morphable');
    }
}

对话框:

class Npc extends BaseModel
{
    public function tasks()
    {
        return $this->morphedByMany('App\Task', 'morphable', 'npcs_events_morphable');
    }
    ...
}

NpcsEventsMorphable:

class Dialog extends BaseModel
{
    public function npcs()
    {
        return $this->belongsToMany(NpcsEventsMorphable::class, 'dialog_npcseventsmorphable');
    }
    ...
}

}

0 个答案:

没有答案