Я пытаюсь найти лучший способ сделать это, не уверен, что это мой код или я просто что-то упустил.
Я пытаюсь реорганизовать наше внутреннее приложение факса с помощью доктрины (1.2) и использую MVC - когда факс получен, он попадает в список. Затем пользователь может выбирать, что с ним делать - в данный момент пересылать, архивировать или уничтожать.
Когда они выбирают один из них, он генерирует действие рабочего потока для факса, которое вставляет запись в следующую таблицу:
fax_id | from_status_id | to_status_id | completed | cancelled
Первоначально, статус равен нулю для обозначения «необработанного» * 1008 *
status_id ищет строку в таблице fax_status.
В настоящее время код выглядит так
Controller:
function action_shred($fax_id)
{
$fax = Doctrine_Core::getTable('fax')->findOneById($fax_id);
// error handling for checking it exists and belongs to the user
$fax->shred();
}
и в модели
function shred()
{
$wf = new FaxWorkFlow();
$wf->fax_id = $this->id;
$wf->from_status_id = $this->status_id;
$wf->to_status_id = Doctrine_Core::getTable('fax_status')->findOneByStatus("Shredded")->id;
$wf->completed = 0;
$wf->cancelled = 0;
$wf->save();
$this->status_id = Doctrine_Core::getTable('fax_status')->findOneByStatus("Queued")->id;
}
Я также нахожу проблемы с такими вещами, как поиск в очереди факсов, поскольку я должен сделать следующее:
$queued_id = Doctrine_Core::getTable('fax_status')->findOneByStatus("Queued")->id;
$queued_faxes = Doctrine_Core::getTable('fax')->findByStatusId($queued_id);
Есть ли проблемы с этим или есть лучший способ сделать это? Я просто думаю, что код выглядит очень некрасиво, и кажется очень хакерским поиск значения поиска в модели факса (возможно, следует перенести его в модель обработки факсов?)
Очень заманчиво жестко закодировать значения состояния в модели, но если они изменятся в будущем, это вызовет проблемы.
в общем, я просто ищу мнение о том, является ли то, что я получил, «правильным», или мне нужно посмотреть на перекодировку, прежде чем я пойду слишком далеко по этому маршруту