Yii Framework: HAS_MANY через условие не работает? - PullRequest
1 голос
/ 08 июня 2011

Я не знаю, что происходит, потому что ничего не складывается, поэтому собираюсь обратиться к сообществу за помощью.

У меня есть ипотека, в которой есть 1 основной заявитель и 1 или более (много) соискателей.

Отношение в моей модели ипотеки:

// primary applicant connection
'primaryApplicantConnection' => array(self::HAS_ONE, 'PersonToMortgage', 'mortgage_id',
    'condition' => 'is_primary=1'
 ),

// primary applicant info
'primaryApplicant' => array(self::HAS_ONE, 'Person', 'person_id', 
    'through' => 'primaryApplicantConnection'),

// co-applicant connection
'coApplicantConnection' => array(self::HAS_MANY, 'PersonToMortgage', 'mortgage_id',
    'condition' => 'is_primary<>1 OR is_primary IS NULL'
),

// co-applicants' info
'coApplicants' => array(self::HAS_MANY, 'Person', 'person_id',
    'through' => 'coApplicantConnection'
),

ВИпотечный контроллер,

$mortgage_model=$this->loadModel($id);
$primaryApplicant = $mortgage_model->primaryApplicant; // return expect result
$coApplicants = $mortgage_model->coApplicants; // the problem is here

Когда я хочу получить все coApplicants, используя $ mortgage_model-> coApplicants, результат также включает основного заявителя.

Чтобы отследить проблему, я попытался использовать $ mortgage_model-> coApplicantConnection, который возвращает только строки соискателя.

Итак, мне интересно, откуда появился основной заявитель?и как это заканчивается в $ mortgage_model-> coApplicants?это ошибка?

1 Ответ

0 голосов
/ 09 июня 2011

Похоже, что происходит, если вы используете функцию «loadModel ($ id)» по умолчанию, она использует «findByPk», которая будет возвращать только один результат, основанный на первичном ключе, предположительно в вашем случае первичный заявитель,независимо от других условий.Вам нужно создать модель таким образом, чтобы использовать условия и возвращать более одной строки с чем-то вроде:

$model = Mortgage::model()->findAll();

, а затем применить отношение к этому результату.

...