2015-03-05 2 views
3

Я использую функцию Laravel красноречив в firstOrNew(), чтобы получить запись БД на основе 3 критериев:Laravel first0rNew Integrity Нарушение ограничения

$summary = $this->firstOrNew(array(
    'date' => $date, 
    'product_id' => $product_id, 
    'store_id' => $store_id, 
    )); 

У меня также есть уникальный составной ключ из этих 3-х полей.

Даже если запись существует, то функция не извлекает его, поэтому, когда я обновить атрибут и запустить $summary->save() я получаю прекрасный

SQLSTATE [23000]: Integrity нарушение ограничения: 1062 Дублированный запись> '2015-01-02-6-23' для ключа 'date_product_store_unique'

Любые идеи?

Laravel версия 4.2.

+0

Вы уверены, что хранилище данных в переданных переменных является тем, что вы ожидаете? – Bogdan

+0

Я отлаживал ввод, по сути, функция firstOrNew() создает новый объект с такими точными данными. Я считаю, что проблема связана с уникальным ключом, который не является основным ключом, но я не уверен. – Shannon

+0

Laravel 4 не поддерживает составные клавиши http://laravel.io/forum/09-25-2014-models-for-tables-with-multiple-columns-for-primary-key возможно Laravel 5 делает ... I не знаю – cawecoy

ответ

Смежные вопросы