2016-10-03 7 views
0

私は、LaravelとNeo4jをバックエンドとして使っているという証明のために取り組んでいます。 NeoEloquentは今のところ選択された選択です:https://github.com/Vinelab/NeoEloquentLaravel NeoEloquent - 同じノードクラス間の動的関係

私は '用語'とは異なる関係の「人物」モデルを持っています。これは、次のように説明されているようにうまくいきます。https://github.com/Vinelab/NeoEloquent#one-to-many

次の手順は動的な関係を作成することです。したがって、用語は別の用語との関係を持つことができます。リレーションシップタイプも柔軟でなければなりません。だから、ちょうどこのようになどの種類、コピーされた、との関係、ことができます:

enter image description here

関係タイプは固定すべきではないと後の段階で可視化されます。このための最良のアプローチは何ですか?多態性の関係とHyperEdgesでこれを行うことはできますか?私が理解しているところでは、多態性の関係では、追加のノードがその間に作成されます。この概念は、エッジがプロパティと属性を持つNeo4jの仕組みとは異なります。私は正しい?このための最良のアプローチは何ですか?

答えて

0

多態性を使って固定します。リレーション上に設定したいプロパティを持つ追加のノードが作成されるため、最適な方法ではありませんが、現時点では機能します。ここで

class Relation extends NeoEloquent 
{ 
    protected $label = 'Relation'; 
    protected $guarded = []; 
    public $timestamps = false; 
    protected $fillable = ['relation_name','relation_description']; 
    public function subject() 
    { 
     return $this->morphMany('App\Term','TO'); 
    } 
} 

用語クラスされています:私はLaravel + NeoEloquent +のNeo4jのデモとして、いくつかの部分をオープンソース化

class Term extends NeoEloquent 
{ 
    protected $label = 'Term'; 
    protected $guarded = []; 
    public $timestamps = false; 
    protected $fillable = ['term_name','term_definition']; 
    public function author() 
    { 
     return $this->belongsTo('App\User', 'CREATED'); 
    } 
    public function relationship($morph=null) 
    { 
     return $this->hyperMorph($morph, 'App\Relation', 'RELATION', 'TO'); 
    } 
    public function object() 
    { 
     return $this->belongsToMany('App\Term', 'RELATION'); 
    } 
    public function whichRelation() 
    { 
     return $this->morphMany('App\Relation','TO'); 
    } 
} 

ここに私が作成したリレーションクラスです。 githubへのリンクはここにあります:https://github.com/pietheinstrengholt/laravel-neo4j-neoeloquent-demo

関連する問題