Yii Записывает таблицу, но не все выбранные данные извлекаются

У меня есть следующие критерии в моем контроллере.

$criteria = new CDbCriteria; $criteria->select = 't.*,b.*,c.*'; $criteria->join = "INNER JOIN tbl_patient_chair b ON b.patient = '0005' INNER JOIN tbl_chair c ON b.chair = c.Serial_No"; $criteria->condition = "t.client_id = '0005'"; $model = Patient::model()->findAll($criteria); $this->render('view', array( 'model' => $model )); 

Затем, на мой взгляд, я пытаюсь получить все выбранные данные, выполнив следующие действия:

 foreach ($model as $models) print_r($model); 

Но в результате я вижу, что нет данных из второй и третьей таблицы. Данные первой таблицы успешно получены, однако я не могу отобразить данные другой таблицы.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

    Соединения лучше всего использовать в Yii, создавая отношения, поэтому вам не нужно будет писать сложные запросы

    Начните с добавления внешних ключей в своих таблицах sql (например, добавьте пациента с иностранным ключом на стуле)

    Затем, если вы регенерируете свою модель, вы можете увидеть, что отношения добавлены автоматически (или вы можете вручную добавить отношения)

     public function relations() { return array( 'chairs' => array(self::HAS_MANY, 'chair', 'patientId'), ); } 

    И в модели стула вы увидите соотношение

     'patient' => array(self::BELONGS_TO, 'patient', 'patientId'), 

    Определение только отношения позволяет получить доступ к значениям в запрошенной модели в виде $ model-> relationName, если вы хотите использовать столбец в состоянии «где», используйте следующий запрос в вашей функции модели (ов)

     $patients=Patient::model()->findAll(array( 'condition' => "$field like '%$value%'", 'with'=>array('chairs'), 'select'=> "*", )); 

    Ключевое слово «с» важно и может содержать массив списка отношений для включения в запрос. Условие запроса будет применяться ко всем включенным таблицам. Здесь вы можете пропустить ключевое слово «с», если вы не хотите запрашивать поле из другой таблицы, и нужны только выходные данные.

    И вы можете добраться до стульев, назначенных пациенту,

     foreach($patients as $patient)print_r($patient->chairs); 

    Существуют и другие подходы, например, обсуждаемые здесь

    Чтобы узнать больше об отношениях, перейдите сюда