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