任何人都有lucadegasperi / oauth2-server-laravel软件包的实际Eloquent模型。迁移在关系上并不十分清楚,尤其是多对多关系。不确定哪一方应该是hasMany()vs belongsToMany()。尝试按照迁移来为Neo4j数据库制作模型。
答案 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包,但是如果他们有关于模型之间关系应该如何的说明,你应该好好去。