0

私は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, )) 

誰かが私が間違っていることを指摘してもらえますか?

4

2 に答える 2

0

問題は、2 つのテーブルが同時に同じ名前の sub_category にマップされているようです。

多対多の関係には、個別の名前が必要な 3 つのテーブル (category/subcategory/category_subcategory) が必要です。2 つのテーブルが同じ名前でマップされると、表示されているエラーが発生します。

マッピングの 1 つを変更すると、起動して実行できるようになります。

于 2013-07-28T13:47:38.000 に答える