Hi All,
I need help on this, I have two tables, form and form_status. Form can be in DRAFT, VERIFIED, FULFILLED or CANCELLED. Instead of having four fields for operator and four fields for timestamp and even 4 memo fields to record form status changes, I introduce form_status table.
in form_status, i have id, formFk, status, recordedBy, recordedAt, memo.
I defined the relations as
'formStatus' => array(self::HAS_MANY, 'FormStatus', 'headerFk'),
'formCreated' => array(self::HAS_ONE, 'FormStatus', 'headerFk', 'order' => 'recordedAt DESC', 'condition' => 'formCreated.status = :status', 'params' => array(':status' => FormHeader::DRAFT)),
The thing is this changes makes me not having values for old forms. I want them to be shown as ‘N/A’.
The problem is that I only have forms that has related rows in form_status shown. The rest are filtered out.
Below is my search function
public function search($type) {
        // Warning: Please modify the following code to remove attributes that
        // should not be searched.
        $criteria = new CDbCriteria;
        $criteria->with = array('formDetails');
        $criteria->compare('t.type', $type);
        $criteria->compare('formNo', $this->formNo, true);
        $criteria->compare('formDate', $this->formDate, true);
        $criteria->compare('partner.name', $this->partnerName, true);
        $criteria->compare('partner.name', $this->foremanName, true);
        $criteria->compare('partner.name', $this->supervisorName, true);
        $criteria->compare('t.memo', $this->memo, true);
        $criteria->compare('t.status', $this->status);
        $sort = new CSort;
        $sort->defaultOrder = 'formDate DESC, formNo DESC';
        $sort->attributes = array(
            'formNo' => array(
                'asc' => 'formDate ASC, formNo ASC',
                'desc' => 'formDate DESC, formNo DESC',
            ),
            'formDate' => 'formDate',
            'partnerName' => array(
                'asc' => 'partner.name ASC',
                'desc' => 'partner.name DESC'
            ),
            'foremanName' => array(
                'asc' => 'partner.name ASC',
                'desc' => 'partner.name DESC'
            ),
            'supervisorName' => array(
                'asc' => 'partner.name ASC',
                'desc' => 'partner.name DESC'
            ),
            't.memo' => 't.memo',
            't.status' => 't.status',
            'createdBy' => array(
                'asc' => 'formCreated.recordedBy ASC',
                'desc' => 'formCreated.recordedBy DESC',
            ),
            'createdAt' => 'createdAt',
        );
        $sort->applyOrder($criteria);
        $formType = FormType::model()->findByPk($type);
        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'sort' => $sort,
            'pagination' => array(
                'pageSize' => Yii::app()->user->getState($formType->shortName . '_pageSize', Yii::app()->params['defaultPageSize']),
                'currentPage' => Yii::app()->user->getState($formType->shortName . '_page', 0),
            ),
        ));
    }
Please help me on understanding the relation.
Thank you in advance.