Нарушение ограничения целостности в Zend_db - PullRequest
2 голосов
/ 07 июня 2009

У меня есть следующий код:

$selectColumns= array('user_id.user_email',
                    'user_details.first_name', 
                    'user_details.last_name', 
                    'user_details.zip', 
                    'user_details.store_id');
$result = $handle->select()->from('user_id')
                           ->where('uid=?', $uid)
                           ->columns($selectColumns)
                           ->join('user_details', 'user_id.uid = user_details.uid')
                           ->query(ZEND_DB::FETCH_OBJ);

После запуска я получаю следующую ошибку:

Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]: '
Integrity constraint violation: 1052 Column 'uid' in where clause is ambiguous

Я пытался понять, что я делаю неправильно. Любая помощь?

Ответы [ 2 ]

6 голосов
/ 07 июня 2009

Проблема заключается в uid=? в вашем предложении WHERE. Поскольку столбец uid находится в обеих таблицах user_id и user_details MySQL не может определить, какой столбец вы действительно хотите использовать. Поэтому вы должны сделать

// [...]
->where('user_id.uid=?', $uid)
// [...]
0 голосов
/ 07 июня 2009

проверить сгенерированный sql запрос в журнале. Может быть, вы должны поместить предложение where после объединения.

...