Представление версий объектов с CakePHP - PullRequest
1 голос
/ 28 февраля 2011

Только что начал входить в CakePHP с пару недель назад.У меня есть некоторый опыт работы с MVC-фреймворками, но эта проблема меня немного сдерживает.

В настоящее время я работаю над моделью foo, содержащей первичный идентификатор и некоторые атрибуты.Поскольку необходима полная история изменений foo, содержимое foo сохраняется в таблице foo_content.Две таблицы связаны через foo_content.foo_id = foo.id, в Cake с foo hasMany foo_content -отношением.

Для отслеживания версий foo, foo_content также содержит столбец version и fooСамо поле currentVersion.Версия - это число, которое увеличивается на единицу каждый раз, когда пользователь обновляет foo.Это старое нативное PHP-приложение, которое должно быть переписано поверх Cake.В приложении 9 раз из 10 самая последняя версия (foo.currentVersion) - это db-запись, которая должна быть представлена ​​во внешнем интерфейсе.

Мой вопрос прост: есть ли способ представить это напрямуюв модели?Или такую ​​логику просто нужно определить в контроллере?

Самый благодарный за вашу помощь!

1 Ответ

2 голосов
/ 28 февраля 2011

Чтобы всегда получать последнюю версию автоматически, вы можете легко создать другую ассоциацию:

public $hasOne = array(
    'CurrentContent' => array(
        …
        'condition' => array('FooContent.version' => 'Foo.currentVersion')
    )
)

То есть, или вы добавляете предложение 'order' => array('FooContent.version' => 'desc') в ваши отношения hasMany и всегда работаете с $foo['FooContent'][0].

Для автоматического создания архивных версий вы можете работать с beforeSave и / или afterSave обратными вызовами.

...