public function testDetach() { $homer = $this->repository->findOneBy('name', 'Homer'); $father = Role::find(1); $this->assertEquals(1, $homer->roles->count()); $homer = $this->repository->detach($homer, 'roles', $father); // Refresh. $homer->load('roles'); $this->assertEquals(0, $homer->roles->count()); }
/** * Create project * * @param string $name * @param User $owner * * @return project */ public function create($name, $owner, $budget, $description = '') { if (empty($name)) { throw new Exception('Project name cannot be empty!', 2000); } $this->_validateOwner($owner); $this->_validateBudget($budget); // Existing name $existing = $this->repo->findOneBy(array('name' => $name, 'budget' => $budget)); if (!is_null($existing)) { throw new Exception('Project name already registered within budget ("' . $budget->getName() . '")!', 2001); } $project = new project(); $project->setName($name); $project->setOwner($owner->getId()); $project->setBudget($budget); $project->setDescription($description); $this->_persistAndFlush($project); return $project; }
/** * Create SubProject * * @param string $name * @param User $owner * * @return SubProject */ public function create($name, $project, $description = '') { if (empty($name)) { throw new Exception('SubProject name cannot be empty!', 2000); } $this->_validateProject($project); // Existing name $existing = $this->repo->findOneBy(array('name' => $name, 'project' => $project)); if (!is_null($existing) && $project->getId() != 0) { throw new Exception('SubProject name already registered within project ("' . $project->getName() . '::' . $name . '")!', 2001); } $budgetRepo = $this->doctrine->getRepository('UKMecoBundle:Budget'); $budget = $budgetRepo->findOneById($project->getBudget()); $this->_validateBudget($budget); $subProject = new SubProject(); $subProject->setName($name); $subProject->setProject($project); $subProject->setBudget($budget); $subProject->setDescription($description); $this->_persistAndFlush($subProject); return $subProject; }