Laravel hasMany 关系 returns '不唯一 table/alias' 错误
Laravel hasMany relation returns ' Not unique table/alias' error
上下文
在 Laravel/Lumen 5.5 中,我在模型 class SchemaTypes
中定义了一个 many-to-many 关系,使用数据透视表 schema_parent_type
:
public function parents()
{
return $this->belongsToMany('SchemaParentType', 'schema_parent_type', 'type_id', 'parent_id' );
}
我可以附加一个新的 parent 使用此代码没有问题:
$type = SchemaTypes::where('name', $parentName)->first();
if ( $type)
{
$type->parents()->attach($parent->id);
}
当我在附加新的 'parent' 后检查 table schema_parent_type
时,它看起来很完美。
问题
当我想查询给定特定 object 的所有 parent 时,问题就出现了。当我使用此代码时:
$type = SchemaTypes::where('name', $parentName)->first();
$parents = $type->parents()->get();
这会导致以下错误:
SQLSTATE[42000]: Syntax error or access violation:
1066 Not unique table/alias: 'schema_parent_type'
(SQL: select `schema_parent_type`.*, `schema_parent_type`.`type_id` as `pivot_type_id`, `schema_parent_type`.`parent_id` as `pivot_parent_id` from `schema_parent_type` inner join `schema_parent_type` on `schema_parent_type`.`id` = `schema_parent_type`.`parent_id` where `schema_parent_type`.`type_id` = 110 and `schema_parent_type`.`deleted_at` is null)
问题
调用$type->parents()->get()
产生这个错误的原因是什么?我该如何解决这个问题?
欢迎任何评论或回答。
您需要将第一个参数更改为另一个模型:
return $this->belongsToMany('SchemaTypes', 'schema_parent_type', 'type_id', 'parent_id' );
可在此处找到更多信息:。看看 David Lartey 他的笔记。
上下文
在 Laravel/Lumen 5.5 中,我在模型 class SchemaTypes
中定义了一个 many-to-many 关系,使用数据透视表 schema_parent_type
:
public function parents()
{
return $this->belongsToMany('SchemaParentType', 'schema_parent_type', 'type_id', 'parent_id' );
}
我可以附加一个新的 parent 使用此代码没有问题:
$type = SchemaTypes::where('name', $parentName)->first();
if ( $type)
{
$type->parents()->attach($parent->id);
}
当我在附加新的 'parent' 后检查 table schema_parent_type
时,它看起来很完美。
问题
当我想查询给定特定 object 的所有 parent 时,问题就出现了。当我使用此代码时:
$type = SchemaTypes::where('name', $parentName)->first();
$parents = $type->parents()->get();
这会导致以下错误:
SQLSTATE[42000]: Syntax error or access violation:
1066 Not unique table/alias: 'schema_parent_type'
(SQL: select `schema_parent_type`.*, `schema_parent_type`.`type_id` as `pivot_type_id`, `schema_parent_type`.`parent_id` as `pivot_parent_id` from `schema_parent_type` inner join `schema_parent_type` on `schema_parent_type`.`id` = `schema_parent_type`.`parent_id` where `schema_parent_type`.`type_id` = 110 and `schema_parent_type`.`deleted_at` is null)
问题
调用$type->parents()->get()
产生这个错误的原因是什么?我该如何解决这个问题?
欢迎任何评论或回答。
您需要将第一个参数更改为另一个模型:
return $this->belongsToMany('SchemaTypes', 'schema_parent_type', 'type_id', 'parent_id' );
可在此处找到更多信息: