php - Doctrine2 bidirectional manyToMany - Undefined index -
php - Doctrine2 bidirectional manyToMany - Undefined index -
adding new favourite dish user (this works):
$user = $em->getrepository('user')->find($userid); $dish = $em->getrepository('dish')->find($dishid); $user->addfavouritedish($dish); $em->persist($user); $em->flush(); getting users has dish favourite (this doesn't work)
$dish = $em->getrepository('dish')->find($dishid); echo 'there '.count($dish->getfavouriteusers()).' users has dish favourite'; error above:
string(23) "undefined index: dish" string(88) "/srv/www/project/vendor/doctrine/orm/lib/doctrine/orm/persisters/basicentitypersister.php" join table:
dinner.user_dish id, user_id, dish_id doctrine generated entities:
/entities/user.php utilize doctrine\orm\mapping orm; /** * user * * @orm\table(name="user") * @orm\entity * @orm\haslifecyclecallbacks */ class user { ... /** * @var \doctrine\common\collections\collection * * @orm\manytomany(targetentity="dish", inversedby="user") * @orm\jointable(name="user_dish", * joincolumns={ * @orm\joincolumn(name="user_id", referencedcolumnname="id", ondelete="cascade") * }, * inversejoincolumns={ * @orm\joincolumn(name="dish_id", referencedcolumnname="id", ondelete="cascade") * } * ) */ private $favouritedishes; /** * constructor */ public function __construct() { $this->session = new \doctrine\common\collections\arraycollection(); $this->favouritedishes = new \doctrine\common\collections\arraycollection(); } ... /** * add together favouritedishes * * @param \dish $favouritedishes * @return user */ public function addfavouritedish(\dish $favouritedishes) { $this->favouritedishes[] = $favouritedishes; homecoming $this; } /entities/dish.php utilize doctrine\orm\mapping orm; /** * dish * * @orm\table(name="dish") * @orm\entity */ class dish { ... /** * @var \doctrine\common\collections\collection * * @orm\manytomany(targetentity="user", mappedby="dish") */ private $favouriteusers; /** * constructor */ public function __construct() { $this->favouriteusers = new \doctrine\common\collections\arraycollection(); } ... /** * favouriteusers * * @return \doctrine\common\collections\collection */ public function getfavouriteusers() { homecoming $this->favouriteusers; } yaml files:
/config/yaml/user.dcm.yml user: type: entity id: id: type: integer generator: strategy: auto fields: displayname: type: string length: 60 unique: true email: type: string length: 255 unique: true hash: type: string length: 60 manytomany: favouritedishes: targetentity: dish inversedby: user jointable: name: user_dish joincolumns: user_id: referencedcolumnname: id inversejoincolumns: dish_id: referencedcolumnname: id onetomany: session: targetentity: session mappedby: user lifecyclecallbacks: prepersist: [ hashpassword ] /config/yaml/dish.dcm.yml dish: type: entity id: id: type: integer generator: strategy: auto fields: title: type: string length: 255 description: type: text image: type: string length: 255 manytomany: favouriteusers: targetentity: user mappedby: dish
the manytomany in dish entity says mappedby: dish. however, in fact mapped favouritedishes. alter favouritedishes:
dish: type: entity id: id: type: integer generator: strategy: auto fields: title: type: string length: 255 description: type: text image: type: string length: 255 manytomany: favouriteusers: targetentity: user mappedby: favouritedishes php doctrine2
Comments
Post a Comment