首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 8没有从包“\Conner\Tagging\Taggable”中找到"tag“;

Laravel 8没有从包“\Conner\Tagging\Taggable”中找到"tag“;
EN

Stack Overflow用户
提问于 2021-02-09 23:40:02
回答 1查看 158关注 0票数 0

当我想从头开始创建一个新标记时,但是当$skillsQuery->count() > 0和输入if语句时,代码工作得很好。印出来了..。

方法说明\数据库\雄辩\Collection::标记不存在。

如何使用此包更新标记?

控制器

代码语言:javascript
复制
<?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!');
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-02-09 23:52:52

->get()上调用Illuminate\Database\Query的结果是,您将收到一个Illuminate\Database\Collection的实例,该实例不包含->tag()方法。即使它是一个查询(通过删除->get()),这仍然不能工作,因为您不能调用集合中的relationship方法。

如果您在skillsQuery上循环,那么您将收到一个Model对象的实例,该实例允许您从它访问函数和/或关系:

代码语言:javascript
复制
$skillsQuery->each(function ($skill) use ($tags) {
  $skill->tag($tags); // or perhaps ->retag($tags); here
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66128907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档