Menno,

Actually I was reading here that says a OneToMany must have a
constructor to instantiate ArrayCollection();
http://docs.doctrine-project.org/en/latest/reference/association-mapping.html
What else I have to do? I don't understand what I missed?



On Sat, Feb 8, 2014 at 1:03 AM, Herman Peeren <[email protected]> wrote:
> Yes, that is the explanation of why that constructor is not invoked. Thank
> you, Menno!  Stupid that I hadn't thought of that... But still I have my
> doubts about the modelling of the Entities here.
>
> On Friday, 7 February 2014 22:25:11 UTC+1, Holtkamp wrote:
>>
>> Ok, sorry, I can't withstand:
>> http://lmgtfy.com/?q=doctrine+entity+constructor
>>
>> and:
>> http://docs.doctrine-project.org/en/latest/reference/architecture.html#entities,
>> states:
>>
>> The constructor of an entity is only ever invoked when you construct a new
>> instance with the new keyword. Doctrine never calls entity constructors,
>> thus you are free to use them as you wish and even have it require arguments
>> of any type.
>>
>> Please, a lot of people (myself included), spend quite some time to read
>> the documentation (written by volunteers, respect it). Yes, it is a lot and
>> it might take some hours / days, but is seems you are persistent enough to
>> not quit before you got what you want ;). So before posting a question
>> again, count to 100 out loud!
>>
>> Cheers!
>>
>>
>> On 7 February 2014 22:19, Menno Holtkamp <[email protected]> wrote:
>>>
>>> This might have something to do with the Entity proxy intercepting the
>>> initialization (in combination with lazy loading?). I believe Marco Piveta
>>> AKA Ocramius wrote a lot about the subject. Google for it and/or dive in the
>>> source code.
>>>
>>> But, you can also trust on the force to always be with you, right?
>>>
>>> Cheers
>>>
>>> On Feb 7, 2014 9:35 PM, "Nima Sadjadi" <[email protected]> wrote:
>>>>
>>>> Herman,
>>>> Here is the info you asked me this morning, correcting uppercase
>>>> things etc. it returns expected data the only odd thing is that
>>>> print("blah") in constructor is not working so the this is not called
>>>> but still works! any idea?
>>>>
>>>> <?php
>>>> // Modules.php
>>>> namespace Entities;
>>>> use Doctrine\ORM\Mapping\ClassMetadata;
>>>> use Doctrine\ORM\Mapping\ClassMetadataInfo;
>>>> use Doctrine\Common\Collections\ArrayCollection;
>>>> class Modules {
>>>> private $module;
>>>> private $status;
>>>> private $modulesConfig;
>>>>     public function __construct() {
>>>>         $this->modulesConfig = new ArrayCollection();
>>>>         print("a");
>>>>         var_dump($this->modulesConfig);
>>>>     }
>>>>     public static function loadMetadata(ClassMetadata $metadata) {
>>>>     // here goes $metadata->mapField array I did generate with CLI
>>>>     // coloumns in this table: module, status
>>>>     // join coloumns with that other table: module=>module
>>>>     $metadata->mapOneToMany(array( 'fieldName' => 'modulesConfig',
>>>>                               'targetEntity' =>
>>>> 'Entities\\ModulesConfig',
>>>>                               'mappedBy' => 'modules',
>>>>                                'joinColumns' => array( 0 => array(
>>>> 'name' => 'module',
>>>>
>>>> 'referencedColumnName' => 'module',
>>>>
>>>> 'nullable' => true,
>>>>
>>>> 'columnDefinition' => NULL,
>>>>                                                       ), )
>>>>
>>>>                              ));
>>>> }
>>>> }
>>>> ==
>>>> <?php
>>>> // ModulesConfig.php
>>>> namespace Entities;
>>>> use Doctrine\ORM\Mapping\ClassMetadata;
>>>> use Doctrine\ORM\Mapping\ClassMetadataInfo;
>>>> class ModulesConfig {
>>>> private $id;
>>>> private $module;
>>>> private $variable;
>>>> private $value;
>>>> private $modules;
>>>>     public static function loadMetadata(ClassMetadata $metadata) {
>>>>     // here goes $metadata->mapField array I did generate with CLI
>>>>     // coloumn in this table: id, module, variable, value
>>>>     // join coloumns with that other table: module=>module
>>>>
>>>>     $metadata->mapManyToOne(array( 'fieldName' => 'modules',
>>>>                               'targetEntity' => 'Entities\\Modules',
>>>>                               'inversedBy' => 'modulesConfig',
>>>>                                'joinColumns' => array( 0 => array(
>>>> 'name' => 'module',
>>>>
>>>> 'referencedColumnName' => 'module',
>>>>
>>>> 'nullable' => true,
>>>>
>>>> 'columnDefinition' => NULL,
>>>>                                                       ), )
>>>>
>>>>                              ));
>>>> }
>>>> }
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Feb 7, 2014 at 1:38 PM, Herman Peeren <[email protected]>
>>>> wrote:
>>>> > No idea what you are doing wrong without the code of the 2 entities
>>>> > plus the
>>>> > calling code, query etc.
>>>> >
>>>> > On Friday, 7 February 2014 10:34:08 UTC+1, Parsifal wrote:
>>>> >>
>>>> >> In two cases below you described, the first case is the one I
>>>> >> actually
>>>> >> want to. And actually it is working fine with expected result. The
>>>> >> only odd
>>>> >> thing is that print("blah") in constructor doesn't print so I assume
>>>> >> the
>>>> >> constructor is not working however I am still getting correct result!
>>>> >> Second
>>>> >> odd thing is that only getArrayResult returns something for this but
>>>> >> I get
>>>> >> error for getResult. Let's look at second problem later but first
>>>> >> let's
>>>> >> check why constructor is not working however I am still getting
>>>> >> correct
>>>> >> result?! Any idea?
>>>> >>
>>>> >> 1) In a Module-entity you can have multiple ModuleConfig-entities and
>>>> >> every ModuleConfig-entity only has 1 Module. In this case you'll have
>>>> >> a
>>>> >> $moduleConfigs collection in a Module on which a
>>>> >> OneToMany-relationship is
>>>> >> defined. In a ModuleConfig you then have a $module defined with a
>>>> >> ManyToOne
>>>> >> relation.
>>>> >> 2) Or: in a Module-entity you can only have 1 ModuleConfig-entity,
>>>> >> but a
>>>> >> ModuleConfig-entity can be associated with multiple Module-entities.
>>>> >> In
>>>> >> that case you'll have a $moduleConfig propery in a Module on which a
>>>> >> ManyToOne-relationship is defined. In a ModuleConfig you then have a
>>>> >> $modules collection defined with a OneToMany relation.
>>>> >
>>>> > --
>>>> > You received this message because you are subscribed to the Google
>>>> > Groups
>>>> > "doctrine-user" group.
>>>> > To unsubscribe from this group and stop receiving emails from it, send
>>>> > an
>>>> > email to [email protected].
>>>> > To post to this group, send email to [email protected].
>>>>
>>>> > Visit this group at http://groups.google.com/group/doctrine-user.
>>>> > For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "doctrine-user" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>>
>>>> Visit this group at http://groups.google.com/group/doctrine-user.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
> --
> You received this message because you are subscribed to the Google Groups
> "doctrine-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/doctrine-user.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups 
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to