Right, so delocalizer's suggestion should work. You wouldn't even need
to do a find() first.
$this->Post->id = $var;
$this->Post->saveField('options', $value1);
$this->Post->updateAll(array('options'=>value2),array('id <>'=>'$var));
On Fri, Aug 21, 2009 at 8:18 AM, albe<[email protected]> wrote:
>
> @ brian:
>
> What I need is to update existing records, and I've got to assign
> $value2 as well as $value1... so I need the ELSE branch.
> However, Thanks for the effort!
>
> On 21 Ago, 13:56, brian <[email protected]> wrote:
>> Oops! I take that back. I just re-read the original post.
>>
>> On Fri, Aug 21, 2009 at 7:55 AM, brian<[email protected]> wrote:
>> > I don't think albe is trying to update existing records, though. And,
>> > anyway, with your example, $value1 is never assigned.
>>
>> > On Fri, Aug 21, 2009 at 7:17 AM, delocalizer<[email protected]>
>> > wrote:
>>
>> >> updateAll is the way to go...
>> >> eg. $this->Post->updateAll(array('options'=>value2),array('id <>
>> >> '=>'$var));
>> >> reducing the number of transactions in this case from n(Posts) to just
>> >> 2 - one for the matching record and one for all the rest.
>>
>> >> On Aug 21, 8:45 pm, brian <[email protected]> wrote:
>> >>> Almost, but $value_2 will never be assigned. Perhaps the OP could shed
>> >>> some light on the bigger picture as there may be a better way to
>> >>> approach this.
>>
>> >>> On Fri, Aug 21, 2009 at 5:07 AM, rich...@home<[email protected]>
>> >>> wrote:
>>
>> >>> > You don't need the else branch in the 2nd example, its taken care of
>> >>> > in the read:
>>
>> >>> > // fetch back the record with an id of $var
>> >>> > $post = $this->Post->read(null, $var);
>>
>> >>> > // update the record
>> >>> > $post['Post']['options'] = value1;
>>
>> >>> > // save the record
>> >>> > $this->Post->save($post);
>>
>> >>> > In the first example, you fetch back a number of records and loop
>> >>> > through them looking for one with an id of $var. It's quite likely
>> >>> > that id will be unique (its should be a primary key) so there's no
>> >>> > need for the loop.
>>
>> >>> > On Aug 20, 5:21 pm, albe <[email protected]> wrote:
>> >>> >> foreach($posts as $p) {
>>
>> >>> >> if ($p['Post']['id'] == $var) {
>> >>> >> $p['Post']['options'] = value1;
>> >>> >> } else {
>> >>> >> $p['Post']['options'] = value 2;
>> >>> >> }
>> >>> >> $this->Post->save($p);
>>
>> >>> >> }
>>
>> >>> >> This works! I just can't say how much I am grateful for your help!
>> >>> >> However I still don't understand why my code was wrong...
>>
>> >>> >> About your second way:
>>
>> >>> >> $post = $this->Post->read(null, $var);
>> >>> >> $post['Post']['options'] = value1;
>> >>> >> $this->Post->save($post);
>>
>> >>> >> If I use this, where shall i put the ELSE branch?
>>
>> >>> >> On 20 Ago, 18:00, "rich...@home" <[email protected]> wrote:
>>
>> >>> >> > Shouldn't that be:
>>
>> >>> >> > foreach($posts as $p) {
>>
>> >>> >> > if ($p['Post']['id'] == $var) {
>> >>> >> > $p['Post']['options'] = value1;
>> >>> >> > } else {
>> >>> >> > $p['Post']['options'] = value 2;
>> >>> >> > }
>> >>> >> > $this->Post->save($p);
>>
>> >>> >> > }
>>
>> >>> >> > also, if you are just matching against the id, you could just write
>> >>> >> > it
>> >>> >> > as:
>>
>> >>> >> > $post = $this->Post->read(null, $var);
>> >>> >> > $post['Post']['options'] = value1;
>> >>> >> > $this->Post->save($post);
>>
>> >>> >> > and forget about the loop
>>
>> >>> >> > On Aug 20, 3:26 pm, AD7six <[email protected]> wrote:
>>
>> >>> >> > > On 20 ago, 15:39, albe <[email protected]> wrote:
>>
>> >>> >> > > > I have to make a foreach cycle to check every item of a certain
>> >>> >> > > > group.
>> >>> >> > > > For each and every item I've got to check a condition and make
>> >>> >> > > > a data
>> >>> >> > > > modification depending on this condition.
>> >>> >> > > > My code is the following:
>>
>> >>> >> > > > foreach($posts as $p) {
>>
>> >>> >> > > > $this->Post->id = $p['Post']['id']; //consider the
>> >>> >> > > > posts one
>> >>> >> > > > by one
>>
>> >>> >> > > > if ($this->Post->id == $var) {
>> >>> >> > > > $this->data['Post']['options'] = value1;
>> >>> >> > > > } else {
>> >>> >> > > > $this->data['Post']['options'] = value 2;
>> >>> >> > > > }
>>
>> >>> >> > > > $this->Post->save($this->data);
>>
>> >>> >> > > > }
>>
>> >>> >> > > > Here is my problem: the modifications are performed correctly
>> >>> >> > > > for the
>> >>> >> > > > IF branch, but NEVER for the else branch.
>> >>> >> > > > Do you know why this occurs?
>>
>> >>> >> > > aliens?
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---