2014-03-19 64 views
0

我有一个数据库,我使用链接表来链接客户端与tarriff,然后再次链接tarriff到tarriffdetails。下面是结构。Yii中的访问关系

Client  BaseTarriff  BaseTariffDetails 

ClientId TarriffId  TarriffDetailsId    
      ClientId  TarriffCode 
          TarriffId 

我要访问使用客户端模式,像这样的basetariffdetails:

$models = Client::model()->with('tarriff')->findByPk(1); 

$model->tarriff->baseTariffDetails->TarriffCode; 

模型之间的关系如下:

Client 
    'tariff' => array(self::BELONGS_TO, 'BaseTariff', 'TarriffId'), 

BaseTarriff 
    'baseTariffDetails' => array(self::HAS_MANY, 'BaseTariffDetails', 'TarriffId'), 

感谢。

+0

如果'BaseTarriff'具有*许多*'BaseTariffDetails','$ model-> tariff-> baseTariffDetails'将是一个数组*,而不是一个对象。您需要检查该数组以找到您要查找的一条明细记录。 (旁注:在“tarriff”和“tariff”之间切换会给你带来很多麻烦,选择其中一个并坚持下去) – DCoder

+0

太棒了。我明白你的意思。干杯。 – user96675

回答

0

如果BaseTarrif只有一个BaseTariffDetails,您可以使用BaseTarrif-> BaseTarifDetails,但是如果BaseTarrif有许多BaseTariffDetails,您将需要迭代低谷$ model,这将从该模型中获得结果。

这里我贴我的代码的一个例子,这是第一种情况

$reservation = Reservation::model()->searchTrack($track->number); 
$reservation->status;     
$reservation->number; 

第二种情况会像

$reservation = Reservation::model()->searchTrack($track->number); 

    foreach ($reservation as $key => $value) { 
     $value->status; 
     $value->number 
     } 

希望这会帮助你。