2种方式,ManyToMany抵制仅在NeoEloquent的一侧进行

时间:2019-03-28 14:20:44

标签: laravel neo4j neoeloquent

我有2个模型UserUserGroup,其中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 个答案:

答案 0 :(得分:2)

也许您需要在'belongsToMany'函数中指定所有参数

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}');

答案 1 :(得分:0)

我终于找到了问题所在。class Hello { public static void main(String[] args) { int[] a = new int[9]; Scanner sc = new Scanner(System.in); for (int i=0;i<a.length;i++) { a[i] = sc.nextInt(); } System.out.println("entered elements:"); for (int x : a) { System.out.println(" " +x); } sc.close(); } } 来自problem。他们想构建neoeloquent ORM,但是他们的思维方式基于a nosql schemaless graph based ORM。本应在两种方式将用户添加到组中时明确定义两种方式:

sql that eloquent ORM is based on然后是$g->users()->attach($u)。在$u->userGroups()->attach($g)中,通过定义eloquent,我可以获取组中的所有用户并获取给定用户的组。 $g->users()->attach($u)并非如此。但是在neoeloquent中,通过创建neo4j dbms两种方法都能正常工作。因此问题出在one way