Details
Description
Hi. I noticed a minor bug in the generate:entities console task. I've got a Region entity that had the following property:
/** * @ORM\OneToMany(targetEntity="District", mappedBy="region") */ private $districts; public function __construct() { $this->districts = new ArrayCollection(); }
When I ran the generate:entities task it created the following methods:
/** * Add districts * * @param Fenix\StudyBundle\Entity\District $districts */ public function addDistricts(\Fenix\StudyBundle\Entity\District $districts) { $this->districts[] = $districts; } /** * Get districts * * @return Doctrine\Common\Collections\Collection */ public function getDistricts() { return $this->districts; }
The second method's name is correct, but what about addDistricts? Since it allows me to add a single District entity it should be as follows:
/** * Add district * * @param Fenix\StudyBundle\Entity\District $district */ public function addDistrict(\Fenix\StudyBundle\Entity\District $district) { $this->districts[] = $district; }
In other words, the term after "add" (as well as the parameter's name) should be the entity's name, not the property's one.
Another option for a semantic method name would be to use 'addTo' as the prefix, as in 'addToDistricts'.
The problem with using the target Entity's name (instead of the property's) is that sometimes you need to have multiple properties that map to the same target Entity.