【发布时间】:2017-05-15 20:08:56
【问题描述】:
任何人都有 lucadegasperi/oauth2-server-laravel 包的实际 Eloquent 模型。迁移对关系不是很清楚,尤其是多对多。不确定哪一边应该是 hasMany() 和 belongsToMany()。尝试按照迁移为 Neo4j 数据库制作模型。
【问题讨论】:
标签: oauth-2.0 laravel-eloquent neoeloquent
任何人都有 lucadegasperi/oauth2-server-laravel 包的实际 Eloquent 模型。迁移对关系不是很清楚,尤其是多对多。不确定哪一边应该是 hasMany() 和 belongsToMany()。尝试按照迁移为 Neo4j 数据库制作模型。
【问题讨论】:
标签: oauth-2.0 laravel-eloquent neoeloquent
在关系方面,鉴于 Neo4j 中的所有关系都是有向的:
hasMany 是一个 OUTGOING 关系 (node1)-[:REL]->(node2) 其中 node1 可以有多个这种类型的传出关系belongsToMany 是一个传入关系(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 包,但如果他们有关于模型之间关系应该如何的说明,你应该很高兴。
【讨论】: