hasOne с двумя операторами соединения для одной таблицы в Laravel - PullRequest
0 голосов
/ 09 января 2020

У меня проблема с ORM Laravel 6.x, давайте посмотрим

У меня есть две таблицы, такие как:

groups : id, name,. ...

groups_tree_paths : предок (group_id), потомок (group_id), ...

Проблема состоит в том, что 2 группы будут иметь один groups_tree_path как:

группа 1 : '1', 'имя_группы_1', ....

группа 2 : '2,' имя_группы_2 ', ... .

group_tree_paths : 'id_group_1', 'id_group_2', ....

Так, как я могу получить группу и всегда возвращать group_tree_path как:

группа 1, group_three_path

группа 2, group_three_path

При вызове: Group :: with ('groupTreePath') ?

Спасибо.

1 Ответ

0 голосов
/ 09 января 2020

В случае определения отношения вам нужно установить внешний ключ, который должен быть уникальным для родительской модели. Вам необходимо установить два отношения для модели GroupTreePath. Один - предок, а другой - потомок.

//Group.php

class Group extends Model
{
    public function ancestor()
    {
       return $this->hasOne(GroupTreePath::class, 'ancestor');
    }
    public function descendant()
    {
       return $this->hasOne(GroupTreePath::class, 'descendant');
    }
}

Затем вызовите Group :: with ('ancestor', 'Потомок')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...