当我想从头开始创建一个新标记时,但是当$skillsQuery->count() > 0和输入if语句时,代码工作得很好。印出来了..。
方法说明\数据库\雄辩\Collection::标记不存在。
如何使用此包更新标记?
控制器
<?php
public function storeSkills(Request $request)
{
$id = auth()->user()->id;
$skillsQuery = Skill::where('created_by', $id)->get();
// If skill exists
if ($skillsQuery->count() > 0) {
$input = $request->all();
$tags = explode(", ", $input['name']);
// $skill = Skill::create($input);
$skillsQuery->tag($tags);
$skillsQuery->created_by = $id;
if ($skillsQuery->save()) {
return redirect()->route('profile')->with('success', 'Skills updated successfully');
} else {
return redirect()->route('profile')->with('error', 'Error updated your Skills!');
}
} else {
$input = $request->all();
$tags = explode(", ", $input['name']);
$skill = Skill::create($input);
$skill->tag($tags);
$skill->created_by = $id;
if ($skill->save())
return redirect()->route('profile')->with('success', 'Skills stored successfully');
else {
return redirect()->route('profile')->with('error', 'Error storing your Skills!');
}
}
}发布于 2021-02-09 23:52:52
在->get()上调用Illuminate\Database\Query的结果是,您将收到一个Illuminate\Database\Collection的实例,该实例不包含->tag()方法。即使它是一个查询(通过删除->get()),这仍然不能工作,因为您不能调用集合中的relationship方法。
如果您在skillsQuery上循环,那么您将收到一个Model对象的实例,该实例允许您从它访问函数和/或关系:
$skillsQuery->each(function ($skill) use ($tags) {
$skill->tag($tags); // or perhaps ->retag($tags); here
});https://stackoverflow.com/questions/66128907
复制相似问题