Laravel 8:找不到基表或视图

时间:2021-02-26 13:13:56

标签: php laravel migration laravel-8

我在 db 有两个表,其中一个名为 users,其中仅包含网站的用户信息,另一个是 tags,其中包含一些用户可以从中选择的主题标签。

我还创建了一个名为 tag_user 的表,可以像这张图片一样存储 tag_iduser_id

enter image description here

(就像 Stackoverflow 一样,用户可以选择多个标签,例如 phpjavascript 等)

所以为了在这两者之间建立这种关系,我将其添加到 User 模型中:

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

还有这个 Tag 模型:

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

这是刀片上的选择选项,用户可以从数据库中选择多个标签:

<select class="form-control BSinaBold" name="skills[]" id="skills" multiple>
    @foreach(\App\Models\Tag::all() as $tag)
        <option value="{{ $tag->id }}" {{ in_array($tag->id , Auth::user()->tags->pluck('id')->toArray()) ? 'selected' : '' }}>{{ $tag->name }}</option>
    @endforeach
</select>

现在我一加载刀片,我就收到了这个错误:

SQLSTATE[42S02]:未找到基表或视图:1146 表 'dbname.user_user' 不存在(SQL:选择 users.*、user_user.{{1 }} as user_id from pivot_user_id 内连接 users on user_user.users = id.user_user where {{1} }.user_id = 4)

所以这里出了什么问题?我该如何解决这个问题?

我真的很感激你们的任何想法或建议......

这里也是 user_user & user_id 表的迁移:

tags

提前致谢。

1 个答案:

答案 0 :(得分:0)

正如@aynber 在评论中所描述的:

User 模型中

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

Tag 模型中

public function users()
{
    return $this->belongsToMany(User::class);
}