Задать вопрос
erniesto77
@erniesto77
oop, rb, py, php, js

Как правильно вставить строку в таблицу, у которой несколько primary key?

Есть zend framework 1.12 и модель в которой в качестве primary key массив с тремя ключами
class Admin_Model_DbTable_Starring extends My_Db_Table
{
    protected $_name = 'starring';

    protected $_primary = array('play_id', 'person_id', 'role_id'); // если тут не массив, а строка с 1 ключом, то все норм
    protected $_rowClass = 'My_Db_Table_Row';
    public $prefix  = 'str';

    ...


Вставка строки в таблицу происходит таким образом (все параметры приходят как числа, проверял):
$starringModel = new Admin_Model_DbTable_Starring();

    $row = $starringModel->createRow();
    $row->play_id = $play_id;
    $row->person_id = $person_id;
    $row->role_id = $role_id;
    $row->status = 2;

    $row->save();


Запись нормально создается, но после вставки в ответе сервера вываливается Notice Array to string conversion in /var/www/html/library/Zend/Db/Statement/Pdo.php on line 228
Такая ерунда только с таблицами, где более 1 ключа primary key: $_primary = array('play_id', 'person_id', 'role_id'). Там где ровно 1 ключ и он равен строке, например $_primary = 'play_id' все нормально.

Как избавиться от этого Notice? Кто нибудь сталкивался с таким?
  • Вопрос задан
  • 266 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Melkij
@Melkij
DBA Team для вашего PostgreSQL?
Более одного первичного ключа быть не может.
Вообще никак не может.
Первичный ключ может быть только один.

Но первичный ключ может быть составным.
Судя по характерному php E_NOTICE, в zend fw составной первичный ключ указывается каким-то другим способом, потому что код пытается привести $_primary к строке и за это получает E_NOTICE.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы