簡體   English   中英

Yii關系-MySQL外鍵

[英]Yii relation — MySQL foreign key

MySQL中的表:

領域:

id pk

field_option

id pk

feild_id int(11)    

ALTER TABLE  `field_option` ADD CONSTRAINT  `option_field` FOREIGN KEY (  `feild_id` ) REFERENCES  `agahi_fixed`.`field` (
`id`
) ON DELETE CASCADE ON UPDATE RESTRICT;

關系字段模型:

return array(
  'fieldOption' => array(self::HAS_MANY, 'FieldOption', 'feild_id'),
);

關系FieldOption模型:

return array(
    'feild' => array(self::BELONGS_TO, 'Field', 'feild_id'),
);

在控制器中:

if(Field::model()->exists('cat_id = :catId', array(":catId"=>$_POST['catid']))){
            $criteria=new CDbCriteria;
            //$criteria->select='*';  
            $criteria->condition='cat_id=:catId';
            $criteria->params=array(':catId'=>$_POST['catid']);
            $criteria->with = 'fieldOption';
            $field=Field::model()->findAll($criteria);
            header('Content-type: application /json');
            $jsonRows=CJSON::encode($field);
            echo $jsonRows;
        }

但是僅在字段表中選擇記錄就不能使用。

為什么?

這樣一來,您將無法達到您的期望,

當你使用抓取你的記錄with將取回相關記錄,這意味着: eager loadinglazy ,但是當你的JSON編碼模型,它將讓您的主模型的屬性,沒有任何關系,如果你想要的任何相關數據,以獲得編碼對於模型,您必須明確地說出這一點。 我建議做一個空數組:

$result = array();

遍歷您的模型並附加到此結果,從模型到相關模型

foreach($field as $model)
{
  $record = $model->attributes; // get main model attributes
  foreach($model->fieldOption as $relation)
     $record['fieldOption'][] = $relation->attributes; // any related records, must be explicitly declared

  $result[] = $record;
}

現在您已完全滿足需要,然后回顯它

 echo CJSON::encode($result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM