[Moscow.pm] Размышления на тему ORM и вообще работы с БД

Peter Rabbitson rabbit+moscowpm на rabbit.us
Пт Окт 28 05:46:24 PDT 2011


On Fri, Oct 28, 2011 at 10:20:06AM +0400, Ivan Petrov wrote:
> > ну уж не говоря о простом:
> 
> > имеем объект
> 
> > user
> 
> > у него есть отношение
> 
> > task
> 
> > $user->task->delete;
> 
> > далее
> > $user->is_changed == 0
> > $user->in_storage == 1
> 
> > отношения между объектами, говорите? где они?
> > ладно бы они были реализованы
> 
> > Отношение здесь $user->task.
> 
> > А какое поведение в этом случае ожидадлсь?
> 
> не все БД поддерживают FOREIGN. соответственно ожидалось что при
> удалении объекта отношения другой объект либо "молча" обновится (что
> должно быть управляемо), либо будет помечен как измененный.


Кстати я здесь не врубился в чем вопрос. Если:

Result::Task->has_many(user => 'Result::User', 'task_id', { cascade_delete => 1 });

то тогда да, $task->delete действительно выплюнет правильный ожидаеммый
DELETЕ (и так до конца по рекурсии). Однако (как и следует ожидать) с 
объектом $user ничего не произойдет, пока на нем не позовут
$user->discard_changes



Подробная информация о списке рассылки Moscow-pm