Нет, соотношение между моделями неверное.
Я предполагаю, что вы хотите, чтобы клиенты могли иметь много счетов, но счет может принадлежать только одному клиенту, поскольку это подразумевает схема вашей базы данных.
Обратите внимание, что в приведенном ниже коде я различаю единственную и множественную формы клиента и счета, чтобы сделать код логичным и легким для понимания.
В этом случае определение отношения в модели Invoice
будетбыть таким:
class Invoice extends CActiveRecord {
public function relations() {
return array(
'customer' => array(self::BELONGS_TO, 'Customer', 'customer_id')
);
}
}
Счет-фактура «принадлежит» клиенту.'Customer'
указывает, что типом модели, на которую мы ссылаемся, является Customer
, а 'customer_id'
- это имя столбца в таблице invoices
, который ссылается на первичный ключ клиента.
Модель Customer
выглядит немного сложнее:
class Customer extends CActiveRecord {
public function relations() {
return array(
'invoices' => array(self::HAS_MANY, 'Invoice',
'customer_id', 'index' => 'id')
);
}
}
Здесь определение отношения указывает, что Customer
может относиться ко многим Invoice
моделям.Обратите внимание, как определяется остальная часть отношения.customer_id
снова является столбцом, который ссылается на Customer
, а 'index' => 'id'
указывает Yii использовать столбец id
в таблице customers
в качестве ключа для отношения.
Вы можете найти большеинформация о методе relations
в документации Yii .