【发布时间】:2023-04-01 21:00:02
【问题描述】:
我是 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, ))
请有人指出我做错了什么?
【问题讨论】:
-
崩溃的查询是什么样的?
-
这是一种雄辩的关系
-
{{ $category->subcategory->name }} 这就是重点
-
我认为您需要描述您的类别和子类别的预期模型。正如它所映射的(据我所知),一个类别可以有许多子类别,一个子类别可以同时属于多个类别。这是你的意图吗?
-
问题似乎是两个表同时映射到同名
sub_category。多对多关系需要 3 个需要不同名称的表(类别/子类别/类别_子类别)。如果其中两个表具有相同的名称,您将收到所显示的错误。
标签: php mysql laravel relationship