2 способа перезапуска ManyToMany работают только в одну сторону с NeoEloquent - PullRequest
0 голосов
/ 28 марта 2019

У меня есть 2 модели User и UserGroup с ManyToMany relashionship следующим образом:

UserGroup.php

  public function users() {
        return $this->belongsToMany('App\User', 'IN');
    }

User.php

public function userGroup()
    {
        return $this->belongsToMany('App\UserGroup', 'IN');
    }

Я добавил user в usergroup, например:

$u=User::find(myUserId) для получения пользователя и $g=UserGroup::find(myGroupId)

И $g->users()->attach($u), и он прекрасно работает, и когда я делаю $g->users()->get(), он также работает. Но когда я делаю $u->userGoup()->get(), он возвращает пустое array. Так что перезапуск работает только на одной стороне usergroup->users но не user->usergroup

Ответы [ 2 ]

2 голосов
/ 28 марта 2019

Возможно, вам нужно указать все параметры в функции 'ownToMany'

return $this->belongsToMany('App\User', 'IN', '{COLUMN_NAME_ID_USERGROUP_ON_'IN'TABLE}', '{COLUMN_NAME_ID_USER_ON_'IN'TABLE}');

return $this->belongsToMany('App\UserGroup', 'IN', '{COLUMN_NAME_ID_USER_ON_'IN'TABLE}', '{COLUMN_NAME_ID_USERGROUP_ON_'IN'TABLE}');
0 голосов
/ 29 марта 2019

Я наконец-то понял проблему. problem происходит от neoeloquent ORM. Они хотели построить a nosql schemaless graph based ORM, но их образ мышления основан на sql that eloquent ORM is based on. Так что я должен был изящество определить 2 способа relashionship при добавлении пользователей в группу обоими способами:

$g->users()->attach($u), а затем $u->userGroups()->attach($g) .In eloquent, определив $g->users()->attach($u), я могу получить всех пользователей группы и получить группу данного пользователя. Но в neoeloquent это не так. Но в neo4j dbms все отлично работает для обоих способов, создав one way. Так что проблема в neoeloquent

...