no, as I said I did debug inside method:
public function setRule($email) {
          $this->rule = $email;
print($this->rule);
}

and it was printed with email, also I tried to hard code email rather than
$_POST with:
$banned-.setRule('[email protected]');
and email was printed inside method.
I guess doctrine actually requires an integer primary key? or there should
be some mistakes in $metadata->mapField?
Anyway, I did not write it myself it was generated by convert-mapping, I
just created a table with rule as primary key and generated
convert-mapping. what is wrong there? should I change something in
$metadata->mapField or in db?






On Fri, Apr 18, 2014 at 8:28 PM, Herman Peeren <[email protected]>wrote:

> It looks like that from the error it follows that $_POST['bannedEmails']
> was empty.
>
>
> On Friday, 18 April 2014 17:33:28 UTC+2, Parsifal wrote:
>
>>
>> Well, forget about that removing. Here is the problem:
>> I have a 'BannedEmail' entity with ONLY ONE property 'rule'. here is the
>> definition:
>>
>>
>> $metadata->setPrimaryTable(array(
>>
>>   'name' => 'banned_emails',
>>
>>    'uniqueConstraints' =>
>>    array(
>> 'rule' => array(
>>     'columns' =>  array(
>>     0 => 'rule', ),
>>    ),
>>    ),
>>   ));
>>
>> $metadata->mapField(array(
>>
>>    'fieldName' => 'rule',
>>
>>   'columnName' => 'rule',
>>
>>    'type' => 'string',
>>
>>    'nullable' => false,
>>
>>    'length' => 60,
>>
>>    'fixed' => false,
>>
>>    'comment' => '',
>>
>>    'default' => '',
>>
>>    'id' => true,
>>
>> ));
>>
>> I have method in the entity:
>>
>>
>> class BannedEmail {
>>
>>
>> private $rule;
>>
>>
>>     public function setRule($email)
>>     {
>>
>>             $this->rule = $email;
>>
>>     }
>>
>>
>> Now I am trying to persist:
>>
>> $banned = new Entities\BannedEmail;
>>
>> $banned->setRule($_POST['bannedEmails']);
>>
>> $em->persist($banned);
>>
>> $em->flush();
>>
>> I get error:  Integrity constraint violation: 1048 Column 'rule' cannot
>> be null'
>> I tried to print debug inside setRule method and it works fine. This
>> entity has no mapping/association with any other entity? so what wrong I
>> did? This 'rule' property is unique too. so should I add an incrementing id
>> and use 'rule' as a normal property? or what wrong I did?
>>
>>
>>
>>
>> On Fri, Apr 18, 2014 at 7:38 PM, Herman Peeren <[email protected]>wrote:
>>
>>> Still the code is nonsensical. Do you want to remove $bannedEmails from
>>> a $emails collection? Do you want to remove or add $emails from or to a
>>> $bannedEmails collection? First step is that it must be clear what you want
>>> to accomplish. Then you code it. Then you get error messages back. Then you
>>> look them up and correct your code. Then you eventually ask a question. If
>>> the question is not clear or not even what exactly you want to accomplish,
>>> the an answer cannot be given. Concrete names are often useful for easier
>>> communication.
>>>
>>>
>>>
>>> On Friday, 18 April 2014 16:37:03 UTC+2, Parsifal wrote:
>>>
>>>> by $blah I was just testing the code and if working, of course I use
>>>> better names in my script. I was just asking I am using a reasonable way to
>>>> do it or there is a better way?
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Apr 18, 2014 at 7:03 PM, Herman Peeren <[email protected]>wrote:
>>>>
>>>>> No, that is not correct, as you would have found out yourself if you
>>>>> try this code. Please do that first before you use as as a llokup-manual.
>>>>>
>>>>> Why do you use a remove() method of the entitymanager? What is that
>>>>> mentod doing? From what collection are you trying to remove that $email?
>>>>> What is $blah? An ORM helps us to use meaningful names.
>>>>>
>>>>>
>>>>> On Friday, 18 April 2014 16:18:03 UTC+2, Parsifal wrote:
>>>>>
>>>>>>
>>>>>> I wasn't ware of findAll() as I was looking wiki, found it on api
>>>>>> then using this:
>>>>>> $emails = $em->getRepository('Entities\BannedEmail')->findAll();
>>>>>> foreach ($emails as $email) {
>>>>>>          $blah = $em->remove($email);
>>>>>> }
>>>>>> $em->flush($blah);
>>>>>>
>>>>>> Am I in correct way to do so?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Apr 18, 2014 at 6:31 PM, Herman Peeren 
>>>>>> <[email protected]>wrote:
>>>>>>
>>>>>>>  An ORM is to work with the objects and then, eventually persist
>>>>>>> some of that in a database. So you add, remove etc. emails from a
>>>>>>> collection (for instance of banned email adresses) and after being 
>>>>>>> finished
>>>>>>> with a set of transactions you can put it to a database. The problem you
>>>>>>> have here is mostly because you rare trying to operate on teh database
>>>>>>> directly. That is much easier without an ORM. Why would you use 
>>>>>>> Doctrine at
>>>>>>> all?
>>>>>>>
>>>>>>>
>>>>>>> On Friday, 18 April 2014 12:33:04 UTC+2, Parsifal wrote:
>>>>>>>>
>>>>>>>> I have an entity for BannedEmail, this has only one property
>>>>>>>> 'email'.
>>>>>>>> In form this is separated by line, when submitted it should
>>>>>>>> truncate current table and exlode the submitted emails by '\n' then 
>>>>>>>> flush
>>>>>>>> in foreach.
>>>>>>>>
>>>>>>>> 1) Should I certainly use dbal to truncate? or is there a way to
>>>>>>>> emty the table with ORM?
>>>>>>>>
>>>>>>>> 2) and when foreach the submitted data, flush() should be inside
>>>>>>>> foreach, or just persist should be inside foreach, and flush after 
>>>>>>>> foreach?
>>>>>>>> as this is per row, I guess each persist will ovverride the last one, 
>>>>>>>> so
>>>>>>>> flush must be inside foreach? right?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>  --
>>>>>>> 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/d/optout.
>>>>>>>
>>>>>>
>>>>>>  --
>>>>> 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/d/optout.
>>>>>
>>>>
>>>>  --
>>> 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/d/optout.
>>>
>>
>>  --
> 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/d/optout.
>

-- 
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/d/optout.

Reply via email to