【问题标题】:Laravel 8: Base table or view not found: 1146 TableLaravel 8:未找到基表或视图:1146 表
【发布时间】:2021-05-30 21:32:30
【问题描述】:

我正在使用 Laravel 8 开发我的论坛项目。

所以我创建了一个名为tags 的表格,其中包含一些主题标签,另一个是questions,其中包含论坛上提出的一些问题。

我还创建了另一个名为 tag_question 的表,显示每个 question_id 正在使用哪个 tag_id,如下图所示:

所以为了建立这种关系,我将其添加到模型Tag

public function questions()
    {
        return $this->belongsToMany(Question::class);
    }

还有这个给模特Question

public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }

现在为了插入带有自定义标签的问题,我添加了这个方法:

public function postForm()
    {
        $validate_data = Validator::make(request()->all(),[
            'title' => 'required',
            'body' => 'required',
            'private' => 'nullable',
            'category' => 'required',
            'tags' => 'array|required',
        ])->validated();

        $question = Question::create($validate_data);

        $question->tags()->sync(request('tags'));

        return redirect()->back();
    }

request('tags') 正在从刀片上的此选择选项中获取:

<label for="topic" class="BKoodakBold">Tags:</label>
   <select class="form-control BSinaBold" name="tags[]" id="skills" multiple>
       @foreach(\App\Models\Tag::all() as $tag)
           <option value="{{ $tag->id }}">{{ $tag->name }}</option>
       @endforeach
   </select>

现在的问题是,每当我尝试插入新问题时,都会出现此错误:

照亮\数据库\查询异常 **SQLSTATE[42S02]:未找到基表或视图:1146 表 'dbname.question_tag' 不存在

那么这里出了什么问题?为什么我会收到此问题以及如何解决?

如果您对此有任何想法或建议,我将不胜感激...

【问题讨论】:

    标签: php laravel laravel-8


    【解决方案1】:

    仅使用一个参数调用 belongsToMany() 会假定数据透视表的名称。

    所以你有两个选择,

    那就是:

    public function questions()
    {
        return $this->belongsToMany(Question::class, 'tag_question');
    }
    

    enpublic function tags()
    {
        return $this->belongsToMany(Tag::class, 'tag_question');
    }
    

    【讨论】:

      【解决方案2】:

      您调用了您的数据透视表 tag_question,但 Laravel 正在寻找 question_tag。尝试将您的表格重命名为:question_tag

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-21
        • 1970-01-01
        • 2018-03-16
        • 2019-01-28
        • 2017-08-02
        • 2016-07-15
        • 1970-01-01
        • 2014-02-25
        相关资源
        最近更新 更多