嗨,我是 laravel 初学者,并且有一个带有 laravel 8 的 API
我想在我的项目中存储带有问题的标签,并且问题和标签之间的关系是多对多多态的(因为我有另一个表并且它们也有标签字段)
在我QuestionController()
想存储问题和标签时,出现此错误:
"Argument 1 passed to Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany::save() must be an instance of Illuminate\\Database\\Eloquent\\Model, string given
当我使用save
而不是saveMany()
给出此错误时:
"message": "Argument 1 passed to Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany::save() must be an instance of Illuminate\\Database\\Eloquent\\Model, array given
我也用过sync()
,但标签没有存储在数据库中
我和邮递员一起尝过
块引用
这method
是这样的:
public function store(StoreQuestionRequest $request)
{
$validatedData = $request->all();
////Because there is no need storage images and question codes
$question = Question::create($validatedData); //store question
//store tags
$tag = new Tag();
$tags = explode(",", $request->tag);//separate tags
$tag['tag'] = $tags;
$question->tags()->saveMany($tags);
return response()->json([
'success'=>true,
'message'=> 'successfully',
'data'=>$question
]);
}
因此,如果您需要了解relations
,这些是我的模型:
Question
:
public function tags(){
return $this->morphToMany(Tag::class, 'taggable');
}
Tag
:
public function questions(){
return $this->morphedByMany(Question::class, 'taggable');
}
感谢您的帮助和关注,我真的需要解决这个问题