我正在将 Vinelab\NeoEloquent 用于 Neo4j 的新项目。我有一个注册,人们可以在其中提供兴趣(作为节点)。注册时,首先创建用户,然后创建兴趣(如果它们不存在),从人到兴趣节点的给定关系“Interested_In”。
我遇到的问题是兴趣已经存在(按名称属性唯一)并且我只想从创建的人和兴趣节点创建关系。
在我的人员模型中(因为 1 人可以有很多兴趣):
public function interest(){
return $this->hasMany('App\Models\Interest','Interested_In');
}
在我的存储库中的创建用户函数中,我有一个部分用于搜索兴趣并在存在时返回一个。问题是我不知道如何创建从 People to Interest 的关系。我尝试将其另存为
$interests = explode(',',$input['tags']);
$int = new NeoInterestRepository();
foreach($interests as $interest){
$existing = $int->find($interest);
if(count($existing)){
$person->interest()->save($existing);
}else{
$my_interest = $int->create($interest);
$person->interest()->save($my_interest);
}
}
但是我得到“传递给 Vinelab\NeoEloquent\Eloquent\Relations\HasOneOrMany::save() 的参数 1 必须是 Illuminate\Database\Eloquent\Model 的实例,给出的 Illuminate\Database\Eloquent\Collection 的实例”
我看到了 associate() 函数,但它仅适用于 BelongsTo,这似乎并不适用。
有任何想法吗?