具有lucadegasperi / oauth2-server-laravel

时间:2017-05-15 20:08:56

标签: oauth-2.0 laravel-eloquent neoeloquent

任何人都有lucadegasperi / oauth2-server-laravel软件包的实际Eloquent模型。迁移在关系上并不十分清楚,尤其是多对多关系。不确定哪一方应该是hasMany()vs belongsToMany()。尝试按照迁移来为Neo4j数据库制作模型。

1 个答案:

答案 0 :(得分:0)

在谈到人际关系时,鉴于Neo4j中的所有关系都是针对的:

  • hasMany是一个OUTGOING关系(node1)-[:REL]->(node2),其中node1可以有多种类型的传出关系
  • belongsToMany是一种INCOMING关系(node1)<-[:INCOME]-(node2),其中node1可以有多种此类传入关系

node1代表一个带有标签的模型(即User),其关系包括Post(hasMany)和Tag(belongsToMany帖子),所以你必须在模型类中定义您的关系,如下所示

class User
{
    public function posts()
    {
        return $this->hasMany(Post::class, 'POSTED');
    }
}

class Post
{
    public function user()
    {
        // reverse of "posts" and must have the same name "POSTED"
        return $this->belongsTo(User::class, 'POSTED'); 
    }

    public function tags()
    {
        return $this->hasMany(Tag::class, 'TAGGED_WITH');
    }
}

class Tag
{
    public function posts()
    {
        // reverse of "tags" and must have the same name "TAGGED_WITH"
        return $this->belongsToMany(Post::class, 'TAGGED_WITH');
    }
}

您最终会得到以下信息:

  • (:User)-[:POSTED]->(:Post)
  • (:Post)-[:TAGGED_WITH]->(:Tag)

您将能够从任何一方引用任何节点。

我没有使用lucadegasperi / oauth2-server-laravel包,但是如果他们有关于模型之间关系应该如何的说明,你应该好好去。