Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel SQLSTATE[42000]:语法错误或访问冲突_Php_Mysql_Laravel_Relationship - Fatal编程技术网

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

Php Laravel SQLSTATE[42000]:语法错误或访问冲突,php,mysql,laravel,relationship,Php,Mysql,Laravel,Relationship,我是拉威尔的新手,我一直在我的关系商店里工作,就像下面这样 类别 id name slug ----------------------------------------------------------------- 3 Location location 4 Outfits outfits 5 Other other 亚类 id category_id

我是拉威尔的新手,我一直在我的关系商店里工作,就像下面这样

类别

    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");
    }
} 

有人能指出我做错了什么吗?

您应该给同一张表指定不同的别名

改变这个

 inner join `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
错误澄清:
非唯一表/别名


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

问题似乎是两个表同时映射到同一名称子类别

多对多关系需要3个需要不同名称的表(类别/子类别/类别\子类别)。如果其中两个表使用相同的名称进行映射,您将得到显示的错误


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

崩溃的查询是什么样子的?它是一种雄辩的关系{{{$category->subcategory->name}}这就是我认为您需要描述的类别和子类别的预期模型。根据映射(据我所见),一个类别可以有许多子类别,并且一个子类别可以同时属于多个类别。这就是您想要的吗?问题似乎是两个表同时映射到同一个名称
sub_category
。多对多关系需要3个需要不同名称的表(类别/子类别/类别\子类别)。如果其中两个表具有相同的名称,您将看到显示的错误。对于Eloquent和$model->belongTomany('OtherModel'),您如何进行“更改其中一个映射”?我遇到过类似的情况,但我使用的是您上面描述的3表关系。我收到一个几乎相同的错误。六羟甲基三聚氰胺六甲醚。。。
    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