SQLSTATE [42S22]:找不到列:1054未知列material_tags.material_uuid

时间:2018-08-06 06:21:00

标签: php sql laravel-5 phpmyadmin

我已经搜索了遇到此错误的人员,但仍然找不到解决方案。

我一直遇到错误:

  

“ SQLSTATE [42S22]:找不到列:1054'字段列表'中的未知列'material_tags.material_uuid'(SQL:选择tags。*,material_tagsmaterial_uuidpivot_material_uuidmaterial_tagstag_uuid作为{{1}的pivot_tag_uuid,来自tags上的material_tags内部联接tagsuuid = { {1}}。material_tags,其中(05a36470-d0a0-11e7-91b4-ff3d7d9f961a)中的tag_uuidmaterial_tagsmaterial_uuidtags为空)”

如果我必须查看材料05a36470-d0a0-11e7-91b4-ff3d7d9f961a,它应该看起来像这样 enter image description here

当我尝试运行位于控制器上的这段代码时:

deleted_at

我的材料模型具有以下内容:

    public function show(Request $request, $id)
{
    $material   = Material::with('tags')->where(
        'uuid',
        $id
    )->first();

所以我有一个Tag表,其中存储了所有标签,还有一个Materials表,其中存储了所有材料。我有Material_tags表,以查看哪些材料具有标签。

迁移时我的create_materials_table

    public function tags()
{
    return $this->belongsToMany('App\Models\Tag', 'material_tags');

}

我的create_tags_table迁移

    public function up()
{
    Schema::connection('materials')->create('materials', function (Blueprint $table) {
        $table->uuid('uuid')
            ->primary();
        $table->string('title');
        $table->integer('viewing_time')
            ->default(15)
            ->comment('In seconds');
        $table->text('description')
            ->nullable();
        $table->uuid('organization_id')
            ->nullable();

        $table->timestamps();
        $table->softDeletes();
    });
}

和我的create_material_tags_table迁移

    public function up()
{
    Schema::connection('materials')->create('tags', function (Blueprint $table) {
        $table->uuid('uuid')
            ->primary();
        $table->string('name')
            ->unique();

        $table->timestamps();
        $table->softDeletes();
    });
}

1 个答案:

答案 0 :(得分:1)

您必须指定自定义外键:

public function tags()
{
    return $this->belongsToMany('App\Models\Tag', 'material_tags', 'material_id', 'tag_id');
}