On Thu, May 15, 2008 at 10:32 PM, Matt Hulse <matt.hu
...@gmail.com> wrote:
> Jon, thanks for the response.
> I explored listeners and hooks and here is what I came up with:
> public function preInsert($event)
> {
> //if a record with this controller and action exists,
> // don't create a new one
> $table = Doctrine::getTable("Permission");
> $permission = $table->findByDql("controller = ? and action = ?",
> array($this->controller, $this->action));
> if($permission[0]->exists()) {
> //echo "Already exists.";
> $this->id = $permission[0]->id;
> $event->skipOperation();
> }
> }
> This code seems to do what I need and duplicate permissions are not
> created. There is a problem though when I try to create permissions
> with relation to the user table.
> $user = new User();
> $user->Permissions[0]->controller = "account";
> $user->Permissions[0]->action = "create";
> $user->save();
> This code generates a new entry for my associative table between users
> and permissions as expected, but now permission_id is always null,
> even for the initial insert. Do I need to change something in the
> user model?
> Any ideas?
> Thanks,
> Matt
> On May 15, 5:49 pm, "Jonathan Wage" <jonw...@gmail.com> wrote:
> > That would work or you could do it with a preSave() record listener
> > possibly. Read up on listeners and you will probably find what you want.
> > - Jon
> > On Thu, May 15, 2008 at 5:22 PM, Matt Hulse <matt.hu...@gmail.com>
> wrote:
> > > I have a permissions table which has two fields, page and action. I
> > > don't want duplicate permission entries but that's what I'm getting
> > > since Doctrine wants an auto increment id field. How do you handle
> > > this kind of thing?
> > > I would really like to setup something like a singleton where I create
> > > a new permission object and when I save, if an entry with the same
> > > page and action already exists, it returns that entry, otherwise it
> > > creates a new entry and returns it.
> > > $permission = new Permission();
> > > $permission->page = 'accounts';
> > > $permission->action='create';
> > > $permission->save(); //permission id = 3
> > > $permission = new Permission();
> > > $permission->page = 'accounts';
> > > $permission->action='delete';
> > > $permission->save();//permission id = 4
> > > $permission = new Permission();
> > > $permission->page = 'accounts';
> > > $permission->action='create';
> > > $permission->save();//permission id = 3
> > > I would like to implement this in a way that will allow me to use
> > > something like $permission->merge($_POST). Does this imply overriding
> > > save?
> > > I appreciate any suggestions. Thanks in advance.
> > > Matt
> > --
> > Jonathan Wagehttp://www.jwage.comhttp://www.centresource.com