Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Составной primarykey

 
Начать новую тему   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
noway



Зарегистрирован: 15 Окт 2007 09:43:02
Сообщения: 11

СообщениеДобавлено: 15 Ноя 2007 11:10:10    Заголовок сообщения: Составной primarykey Ответить с цитатой

Не могу разобраться, как использовать составной primaryKey в таблице. Объявить var $primaryKey = array('product_id','image'); не получается. А если объявить как перв.ключ одно поле а потом использовать
$this->save(array("product_id"=>'1',"image_path"=>'image'));
$this->save(array("product_id"=>'1',"image_path"=>'image2'));

то он начинает второй записью апдейтить первую, а не добавлять новую.

Как быть?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ztalker



Зарегистрирован: 06 Ноя 2007 14:00:26
Сообщения: 26
Откуда: Новосибирск

СообщениеДобавлено: 15 Ноя 2007 11:37:49    Заголовок сообщения: Ответить с цитатой

Сделай первичным ключ `id`, а поля `porduct_id` и `image_path` как индекс (если это вообще нужно). В таком случае второе действие добавит новую запись.
_________________
На работу в Новосибирске требуется PHP программист, со знанием CakePHP. Пишите в личку.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
noway



Зарегистрирован: 15 Окт 2007 09:43:02
Сообщения: 11

СообщениеДобавлено: 15 Ноя 2007 11:45:41    Заголовок сообщения: Ответить с цитатой

Это конечно хорошо, но пораждает избыточность =(
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ztalker



Зарегистрирован: 06 Ноя 2007 14:00:26
Сообщения: 26
Откуда: Новосибирск

СообщениеДобавлено: 15 Ноя 2007 12:38:43    Заголовок сообщения: Ответить с цитатой

В чем избыточность? При хорошем построении БД каждая таблица должна содержать `id`.
`product_id`, как я понимаю, это у тебя сторонний ключ таблицы продуктов. В таком случаю у тебя есть id записи этой таблицы, чтобы эту запись идентифицировать, и id продукта чтобы определить к какому продукту относится эта запись.
Можно было бы сказать что есть избыточность, когда одной записи соответствует одна запись, тогда стоит подумать - делать `id` и `product_id`, когда по сути они будут хранить одно и тоже значение. Хотя и в таких вариантах я делаю id.
_________________
На работу в Новосибирске требуется PHP программист, со знанием CakePHP. Пишите в личку.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
bunyan



Зарегистрирован: 15 Ноя 2007 14:57:37
Сообщения: 17

СообщениеДобавлено: 15 Ноя 2007 15:05:48    Заголовок сообщения: Ответить с цитатой

В английской гугл-группе по кейку была пара дискуссий на эту тему. Вкратце: составной ключ в кейке можно использовать, если таблица является связкой в HABTM-ассоциации и содержит только два столбца. Если там хранятся дополнительные данные, то нужен один столбец в качестве первичного ключа. Обязательность наличия такового в любой таблице любой БД сомнительна, но в случае с кейком сомнений не вызывает, поскольку на этом построена вся его "автомагия".

Upd: первичный ключ здесь имеется в виду технический, конечно, т.е. INT AUTOINCREMENT


Последний раз редактировалось: bunyan (16 Ноя 2007 03:50:21), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
KPOTOB
Гость





СообщениеДобавлено: 15 Ноя 2007 20:11:11    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

bunyan
Вроде как при 'with' поле id не нужно и доп поля можно спокойно вписывать
Вернуться к началу
bunyan



Зарегистрирован: 15 Ноя 2007 14:57:37
Сообщения: 17

СообщениеДобавлено: 16 Ноя 2007 03:58:59    Заголовок сообщения: Ответить с цитатой

Да, дополнительные поля можно использовать, но в тех документах, что я нашел, не было сказано про отсутствие id и возможность использования составного ключа вместо него.
_________________
Блог о CakePHP
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru