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('SchemaTyp‌​es', 'schema_parent_type', 'type_id', 'parent_id' );

可在此处找到更多信息:。看看 David Lartey 他的笔记。