我正在尝试在同一口才模型上使用多对多关系。该模型代表商店中的一件商品,并且可能与许多其他商品相关。
这是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个相关项,但是两次获得ID为0的项(这是从中调用该关系的项)。
我的代码有错吗? 预先感谢。
答案 0 :(得分:1)
将related_id
指定为第四参数:
public function related()
{
return $this->belongsToMany('App\Item', 'related_items', null, 'related_id');
}