Как правильно использовать отношение «многие ко многим» с одной и той же моделью? - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь использовать отношение многие ко многим в одной и той же модели Eloquent.Модель представляет один элемент в магазине и может быть связана со многими другими элементами.

Это текущая миграция модели RelatedItem:

Schema::create('related_items', function (Blueprint $table) {
            $table->primary(['item_id', 'related_id']);
            $table->integer('item_id')->unsigned()->index();
            $table->foreign('item_id')->references('id')->on('items');
            $table->integer('related_id')->unsigned()->index();
            $table->foreign('related_id')->references('id')->on('items');
            $table->timestamps();
        });

И это отношение вItem модель:

public function related()
    {
        return $this->belongsToMany('App\Item', 'related_items', "related_id");
    }

Я создал несколько отношений через DatabaseSeeder, который вставляет эти записи в мою базу данных:

DB::table('related_items')->insert([
            'item_id' => 0,
            'related_id' => 1,
        ]);
        DB::table('related_items')->insert([
            'item_id' => 0,
            'related_id' => 2,
        ]);

Я ожидал получить 2 связанныхitems, но вместо этого дважды получил элемент с идентификатором 0 (из которого вызывается отношение).

Что-то не так с моим кодом?Заранее спасибо.

1 Ответ

0 голосов
/ 20 января 2019

Укажите related_id в качестве четвертого аргумента:

public function related()
{
    return $this->belongsToMany('App\Item', 'related_items', null, 'related_id');
}
...