0

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

4

1 回答 1

0

在关系方面,鉴于 Neo4j 中的所有关系都是定向的:

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

node1表示带有标签 (ie 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 但如果他们有关于模型之间关系应该如何的说明,你应该很高兴。

于 2017-05-16T08:33:13.693 回答