1

私は次のテーブルを持っています:

忍耐強い

  • id
  • ファーストネーム
  • 苗字

イベント

  • id
  • patient_id
  • event_description

お知らせ

  • id
  • event_id
  • Notification_description

モデルで次の関係が定義されています。

Notification.php

public function relations()
{
    return array(
                'event' => array(self::BELONGS_TO, 'Event', 'event_id'),
            );
}

Event.php

public function relations()
{
    return array(
                'patient' => array(self::BELONGS_TO, 'Patient', 'patient_id'),
    );
}

名が「Joe」、姓が「Smith」の患者のすべての通知を受け取りたいです。SQLステートメントを書き出さずにそれを行う方法はありますか?

4

1 に答える 1

2

次のようなカスタム検索機能が必要です。

    public function searchCandidates() {
// Warning: Please modify the following code to remove attributes that
// should not be searched.

        $criteria = new CDbCriteria;

        $criteria->with = array('candidate_relation');//this is a relation; you can pute here, relation_a.relation_b.relation_c
        $criteria->compare('id', $this->id);
        $criteria->compare('email', $this->email, true);
        $criteria->compare('password', $this->password);
        $criteria->compare('created', $this->created);
        $criteria->compare('lastmodified', $this->lastmodified);
        $criteria->compare('confirmed', $this->confirmed);
        $criteria->compare('is_candidate', 1);
        $criteria->compare('username', $this->username, true);
        $criteria->compare('candidate_relation.first_name', $this->full_name, true);//and another relation here ...
        $criteria->compare('candidate_relation.last_name', $this->full_name, true, 'OR');

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }

モデルのfull_nameカスタムプロパティは次のとおりです。public $full_name;

于 2013-03-19T18:24:56.737 に答える