Yii Отношения с неосновными ключами - PullRequest
2 голосов
/ 14 декабря 2011

У меня есть таблица mysql и представление mysql, для которого я пытаюсь построить отношения.

Таблица (commissions) выглядит следующим образом:

--commissions--
id(primary Key)
date_added
order_id
salesrep_id
customer_id
commission_total
status

Представление (rep_view_customer) выглядит следующим образом:

--rep_view_customer--
entity_id
email
first_name
last_name
company

Я пытаюсь связать rep_view_customer с commissions на commissions.customer_id = rep_view_customer.entity_id.

Я пытался использовать onопция:

'rep_view_customer' => array(self::HAS_ONE, 'RepViewCustomer', '', 'on'=>'rep_view_customer.entity_id = t.customer_id')

Я также попытался установить первичный ключ для модели rep_view_customer, используя:

public function primaryKey(){
    return 'entity_id';
}

Но у меня всегда появляется ошибка, похожая на:

CDbCommand не удалось выполнить инструкцию SQL: SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец 't.customer_id' в 'предложении where'.Выполнено SQL-выражение: SELECT rep_view_customer. entity_id AS t1_c0, rep_view_customer. email AS t1_c1, rep_view_customer. first_name AS t1_c2, rep_view_customer. last_nameКАК t1_c3, rep_view_customer. company КАК t1_c4 ОТ rep_view_customer rep_view_customer ГДЕ (rep_view_customer.entity_id = t.customer_id)

Я в конце концов, чтопопробовать следующий

Ответы [ 2 ]

0 голосов
/ 15 мая 2013

Я сделал это так, и это работает: поэтому в модель комиссий, которую вы вводите: (она делает отношение через себя внутри модели, тогда выход соединения будет таким же, как нормальное отношение, но с другим уникальным ключом в модели комиссии)

public function relations()
    {
        return array(
            'commission' => array(self::HAS_ONE, 'Commission', 'entity_id', 'on' => 'commission.customer_id=rep_view_customer.entity_id'),
            'rep_view_customer' => array(self::HAS_MANY, 'RepViewCustomer', '', 'through' => 'commission', 'condition' => '...'),
        ),
    }      
0 голосов
/ 16 декабря 2011

Вам нужно будет создать внешний ключ внутри repview_customer для связи с комиссиями.Вы не сможете сделать это только с помощью первичного ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...