public function getOrderItems() { /** @var ActiveQuery $rel */ $rel = $this->hasMany(Item::className(), ['id' => 'item_id']); return $rel->viaTable('order_item', ['order_id' => 'id'], function ($q) { /** @var ActiveQuery $q */ $q->viaTable('order', ['customer_id' => 'id']); })->orderBy('id'); }
public function testDeeplyNestedTableRelation() { /* @var $customer Customer */ $customer = Customer::findOne(1); $this->assertNotNull($customer); $items = $customer->orderItems; $this->assertEquals(2, count($items)); $this->assertInstanceOf(Item::className(), $items[0]); $this->assertInstanceOf(Item::className(), $items[1]); $this->assertEquals(1, $items[0]->id); $this->assertEquals(2, $items[1]->id); }