SQLSTATE [42S22]:找不到列:1054未知列material_tags.material_uuid
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLSTATE [42S22]:找不到列:1054未知列material_tags.material_uuid相关的知识,希望对你有一定的参考价值。
我搜索过遇到此错误的人,但我仍然找不到解决方案。
我一直在收到错误:
“SQLSTATE [42S22]:列未找到:1054未知列'material_tags.material_uuid'在'字段列表'中(SQL:选择
tags
。*,material_tags
.material_uuid
为pivot_material_uuid
,material_tags
.tag_uuid
为pivot_tag_uuid
,tags
内部连接material_tags
在tags
上。uuid
=material_tags
.tag_uuid
其中material_tags
.material_uuid
在(05a36470-d0a0-11e7-91b4-ff3d7d9f961a)和tags
.deleted_at
为空)“
如果我必须查看材料05a36470-d0a0-11e7-91b4-ff3d7d9f961a它应该看起来像这个
当我尝试运行位于控制器上的代码时:
public function show(Request $request, $id)
{
$material = Material::with('tags')->where(
'uuid',
$id
)->first();
我的材料模型有这个:
public function tags()
{
return $this->belongsToMany('AppModelsTag', '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');
});
}
您必须指定自定义外键:
public function tags()
{
return $this->belongsToMany('AppModelsTag', 'material_tags', 'material_id', 'tag_id');
}
以上是关于SQLSTATE [42S22]:找不到列:1054未知列material_tags.material_uuid的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE [42S22]:找不到列:1054 未知列 '0' where 子句
SQLSTATE [42S22]:找不到列:1054 未知列 laravel 5.1
SQLSTATE [42S22]:找不到列:1054 'where 子句'中的未知列'user_id'
Laravel 删除数据 - SQLSTATE [42S22]:找不到列:1054 未知列