public function testEmbeddedRelation() { //simulate form input $post = ['oPrice' => ['Price' => '10.00', 'Cost' => '10.00', 'Discount' => '0', 'QuantityMeasure' => '796', 'Quantity' => '11.00']]; $price = new oPrice(); $transport = new oTransport(); $transport->load(['oTransport' => ['@class' => 'Transport', 'TransportIdentifier' => 'AB0202AM23', 'NameMrkCar' => 'KAMAZ', 'model' => '2207', 'volume' => '10000', 'mass' => '4000', 'Note' => 'Truck']]); $price->transport = $transport; //! equal THAT - will create ActiveRecord if exists $this->assertTrue($price->load($post), 'Load price POST data'); $this->assertTrue($price->validate(), 'Validate price'); $this->assertTrue($price->save(), 'Create price'); $priceFind = oPrice::find()->where(['@rid' => $price['@rid']])->with(['transport'])->one(); $this->assertTrue($priceFind->QuantityMeasure == '796', 'Check QuantityMeasure'); $this->assertTrue($priceFind->transport->TransportIdentifier == 'AB0202AM23', 'Check relation embedded transport->TransportIdentifier'); $priceFind->QuantityMeasure = '999'; $priceFind->transport->TransportIdentifier = 'modify TransportIdentifier'; $this->assertTrue($priceFind->validate(), 'Validate price'); $this->assertTrue($priceFind->save(), 'Update price an embedded relation'); $priceFind2 = oPrice::find()->where(['@rid' => $price['@rid']])->with(['transport'])->one(); $this->assertTrue($priceFind2->QuantityMeasure == '999', 'Check modify QuantityMeasure'); $this->assertTrue($priceFind2->transport->TransportIdentifier == 'modify TransportIdentifier', 'Check modify relation embedded transport->TransportIdentifier'); return $priceFind; }
public function getTransport() { return $this->embeddedOne(oTransport::className(), 'transport'); }