Laravel SQLSTATE[42000]:语法错误或访问冲突


Laravel SQLSTATE[42000]: Syntax error or access violation

我是laravel的新手,我一直与我的关系有关

类别

    id  name            slug
-----------------------------------------------------------------
    3   Location        location
    4   Outfits         outfits
    5   Other           other

子类别

  id    category_id     name                slug
-----------------------------------------------------------------------------
     12     3           Club                club
     13     3           Home / Hotel        home-hotel
     14     3           Outdoor             outdoor
     15     3           Studio              studio
     16     4           Bikini / Swimwear   bikini-swimwear
     17     4           Dress               dress
     19     4           Jeans               jeans
     35     5           Dancing             dancing

类别模型

<?php
class Category extends Eloquent {
    public $timestamps = false;
    public function subcategory()
    {
        return  $this->belongsToMany('subcategory', "sub_categories");
    }
} 

我得到以下错误

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'sub_categories' (SQL: select `sub_categories`.*, `sub_categories`.`category_id` as `pivot_category_id`, `sub_categories`.`subcategory_id` as `pivot_subcategory_id` from `sub_categories` inner join `sub_categories` on `sub_categories`.`id` = `sub_categories`.`subcategory_id` where `sub_categories`.`category_id` = ?) (Bindings: array ( 0 => 1, )) 

请某人指出我做错了什么好吗?

您应该为同一个表提供不同的别名

更改此

 inner join `sub_categories`

   inner join `sub_categories` as sc   
                                   ^^--//-this alias use it instead of sub_categories

在您的查询中,它将是

    select `sub_categories`.*, sc.`category_id` as `pivot_category_id`, sc.`subcategory_id` as `pivot_subcategory_id` from `sub_categories` inner join `sub_categories` sc on sc.`id` = `sub_categories`.`subcategory_id` where `sub_categories`.`category_id` = ?) (Bindings: array ( 0 => 1, )

示例:

 select * from table1 as t1
 inner join table1 as t2
on t1.id = t2.id

澄清您的错误:Not unique table/alias

您正在将没有别名的同一个表连接到它们之间的不同表。

问题看起来像是两个表同时映射到相同名称的sub_category。

多对多关系需要3个表(类别/子类别/类别_子类别),这些表需要不同的名称。如果其中两个表使用相同的名称进行映射,则会出现所显示的错误。

更改其中一个映射,您就应该启动并运行了。