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

问题描述 投票:0回答:1

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

我一直在收到错误:

“SQLSTATE [42S22]:列未找到:1054未知列'material_tags.material_uuid'在'字段列表'中(SQL:选择tags。*,material_tags.material_uuidpivot_material_uuidmaterial_tags.tag_uuidpivot_tag_uuidtags内部连接material_tagstags上。 uuid = material_tags.tag_uuid其中material_tags.material_uuid在(05a36470-d0a0-11e7-91b4-ff3d7d9f961a)和tags.deleted_at为空)“

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

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

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

我的材料模型有这个:

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

}

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

迁移时我的create_materials_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_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();
    });
}

和我的create_material_tags_table迁移

public function up()
{
    Schema::connection('materials')->create('material_tags', function (Blueprint $table) {
        $table->uuid('uuid')
            ->primary();
        $table->uuid('material_id');
        $table->uuid('tag_id');

        $table->timestamps();

        $table->foreign('material_id')
            ->references('uuid')
            ->on('materials')
            ->onDelete('cascade');
        $table->foreign('tag_id')
            ->references('uuid')
            ->on('tags')
            ->onDelete('cascade');
    });
}
php sql laravel-5 phpmyadmin
1个回答
1
投票

您必须指定自定义外键:

public function tags()
{
    return $this->belongsToMany('App\Models\Tag', 'material_tags', 'material_id', 'tag_id');
}
© www.soinside.com 2019 - 2024. All rights reserved.