0

Laravel と Neo4j をバックエンドとして使用して、概念実証に取り組んでいます。今のところ、NeoEloquent が推奨される選択肢です: https://github.com/Vinelab/NeoEloquent

今のところ、「用語」と多くの関係を持つ「人」モデルがあります。https://github.com/Vinelab/NeoEloquent#one-to-manyで説明されているように、これはうまく機能します。

次のステップは、動的な関係を作成することです。したがって、用語は別の用語との関係を持つことができます。関係のタイプも柔軟にする必要があります。したがって、それは一種の、コピーされた、関係などである可能性があります。次のように:

ここに画像の説明を入力

関係の種類は修正しないでください。後の段階で視覚化されます。これに最適なアプローチは何ですか?ポリモーフィック リレーションと HyperEdges でこれを行うことはできますか? 私が理解していることから、ポリモーフィック リレーションでは間に追加のノードが作成されるということです。この概念は、エッジにプロパティと属性がある Neo4j の動作とは異なります。私は正しいですか?これに最適なアプローチは何ですか?

4

1 に答える 1

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');
    }
}

Term クラスは次のとおりです。

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');
    }
}

一部のパーツを Laravel + NeoEloquent + Neo4j デモとしてオープンソース化しました。github へのリンクはこちら: https://github.com/pietheinstrengholt/laravel-neo4j-neoeloquent-demo

于 2016-10-05T06:56:54.313 に答える