我在 Laravel 中相对较新,我想学习如何使用引用主键的 2 个外键创建递归关系。
我有一个表item_associations
,其中有 2 个 FK 引用了item table
的 PK:
Schema::create('item_associations', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->unsignedInteger('item_id');
$table->foreign('item_id')
->references('id')
->on('items');
$table->unsignedInteger('item2_id');
$table->foreign('item2_id')
->references('id')
->on('items');
});
这是我的ItemAssociation model
:
protected $table = 'item_associations';
public function items(){
return $this->belongsTo('App\Models\Item','item_id');
}
public function item2_id(){
return $this->belongsTo('App\Models\Item','item2_id', 'item_id');
}
这是我的Item model
:
protected $table = 'items';
public function item_associations(){
return $this->hasMany(UserType::class);
}
这是我的欢迎控制器:
$item_association = DB::table('item_associations')
->join ('items', 'item_associations.item_id', '=', 'items.id')
->join ('items', 'item_associations.item2_id', '=', 'items.id')
->get();
return view('welcome', [
'item_association' => $item_association,
]);
显然,我收到一个错误: SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'items' (SQL: select * from item_associations
inner join items
on item_associations
. item_id
= items
. id
inner join items
on item_associations
. item2_id
= items
. id
)