Because I didn't know about it! Thank you so much Ma'moon!

On Sat, Nov 21, 2009 at 3:31 PM, Ma'moon <phpir...@gmail.com> wrote:

> ًWhy you're not using *Increment Behavior*
> http://bakery.cakephp.org/articles/view/increment-behavior ?!!
>
>
> On Sat, Nov 21, 2009 at 11:52 AM, Dave <davidcr...@gmail.com> wrote:
>
>> Hehe it is close to on the money.  I do appreciate your help.  The goal of
>> this question was to increment a value with 1 query.  You can do this with
>> MySQL with a simple query settings field = field + 1.  I was just wondering
>> if there was a way to do this within the core as usually your fields are
>> escaped in cake functions.  I have figured out my problem.  Thank you
>> though.
>>
>> Dave
>>
>>
>> On Sat, Nov 21, 2009 at 12:39 AM, jburns <jeremybu...@me.com> wrote:
>>
>>> You are right.
>>>
>>> Can I ask if you are using recursion and containable? If so, you can
>>> be very specific about what tables, records and fields are returned.
>>> I'm still fairly new with Cake but have realised that it is a good
>>> thing to implement these in AppModel and then I have complete control
>>> over data returned within my models and controller functions. It's a
>>> bit more work for me, but well worth it in the performance stakes.
>>>
>>> With recursion set at -1 you will only get records from the current
>>> table (in other words, no associated tables). When you want to bring
>>> in associations, increase recursive to 0 or more, then use contain to
>>> bring in the associations. You can specify fields from those
>>> associations too:
>>>
>>> $this->Post->contain = array(
>>>        'Author' => array(
>>>                'fields' => array ('id', 'first_name', 'last_name')
>>>        )
>>> );
>>>
>>> In your case, with recursion set at -1 you can call...
>>>
>>> $this->Post->read(array('title', 'Published'), 1);
>>> $this->Post->set(array(
>>>        'title' => 'New title',
>>>        'published' => false
>>> ));
>>> $this->Post->save();
>>>
>>> ...and this will only bring back the value of 'title' and 'published'
>>> in the record with an id of 1 and nothing else. That has to be right
>>> on the money, doesn't it?
>>>
>>>
>>> On Nov 20, 6:44 pm, Dave <davidcr...@gmail.com> wrote:
>>> > jburns, if you set your debug level to 2 you will see that performs 2
>>> > queries AND gets a bunch of data I don't need about the item...
>>> >
>>> > grigri that is very helpful to know that updateAll doesn't escape your
>>> > arguments.
>>> >
>>> > I don't need to afterSave currently, but it is good to know I can do it
>>> the
>>> > second way as well.
>>> >
>>> > Thank you very much.
>>> >
>>> >
>>> >
>>> > On Fri, Nov 20, 2009 at 9:45 AM, grigri <j...@hendersonwebdesign.com>
>>> wrote:
>>> > > It's possible in two ways.
>>> >
>>> > > First, you've got the `updateAll` function which doesn't escape or
>>> > > mess with your arguments:
>>> >
>>> > > $this->Item->updateAll(
>>> > >  array('Item.flags' => 'Item.flags + 1'),
>>> > >  array('Item.id' => 666)
>>> > > );
>>> >
>>> > > One possible problem with this is that it will not call `afterSave`,
>>> > > trigger behaviour methods, etc... because it's not really a save.
>>> > > If you need this to work with the rest, the solution is a bit more
>>> > > long-winded:
>>> >
>>> > > $db =& ConnectionManager::getDataSource($this->Item->useDbConfig);
>>> > > $this->Item->set('flags', $db->expression('`Item`.`flags`+1'));
>>> > > $this->Item->save();
>>> >
>>> > > In reality, accessing the datasource and whatnot should be hidden in
>>> > > the model, but this shows a bare-bones way of getting it working.
>>> >
>>> > > hth
>>> > > grigri
>>> >
>>> > > On Nov 20, 12:46 pm, Dave <davidcr...@gmail.com> wrote:
>>> > > > Hi everybody,
>>> >
>>> > > > I have a quick question that bugs me each time I run into it in a
>>> > > project,
>>> > > > and then I promptly forget about it.  It is an easy fix, but it is
>>> such
>>> > > > common functionality that I feel there must be some way to do it
>>> within
>>> > > > built in functions rather then a custom query.
>>> >
>>> > > > The issue is incrementing a table field without grabbing the
>>> previous
>>> > > value,
>>> > > > using MySQL's default function `tablefield` = `tablefield` + 1 .
>>> >
>>> > > > example:
>>> >
>>> > > > $this->Item->query('UPDATE `items` SET `flags` = `flags`+1 WHERE
>>> > > > `items`.`id` = ' . $id);
>>> >
>>> > > > I have tried pretty much every way I can think of with
>>> model->saveField
>>> > > to
>>> > > > accomplish this through cake, but I can't get it to work.
>>> >
>>> > > > First I set the id with $this->Item->id = $id
>>> > > > After that I have tried
>>> >
>>> > > > $this->Item->saveField('flags','+1');
>>> > > > $this->Item->saveField('flags',' +1');
>>> > > > $this->Item->saveField('flags', 'flags+1');
>>> > > > $this->Item->saveField('flags', '`flags`+1');
>>> >
>>> > > > So... is there a way to do this with 1 query within cake? I like to
>>> have
>>> > > as
>>> > > > few custom queries as possible within my application.
>>> >
>>> > > > Thanks for any tips,
>>> >
>>> > > > who knows, if it isn't built in maybe I will be able to make my
>>> first
>>> > > > contribution to the Core!
>>> >
>>> > > > Dave
>>> >
>>> > > --
>>> >
>>> > > You received this message because you are subscribed to the Google
>>> Groups
>>> > > "CakePHP" group.
>>> > > To post to this group, send email to cake-...@googlegroups.com.
>>> > > To unsubscribe from this group, send email to
>>> > > cake-php+unsubscr...@googlegroups.com<cake-php%2bunsubscr...@googlegroups.com>
>>> <cake-php%2bunsubscr...@googlegroups.c om>
>>> > > .
>>> > > For more options, visit this group at
>>> > >http://groups.google.com/group/cake-php?hl=.
>>>
>>> --
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "CakePHP" group.
>>> To post to this group, send email to cake-...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> cake-php+unsubscr...@googlegroups.com<cake-php%2bunsubscr...@googlegroups.com>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/cake-php?hl=.
>>>
>>>
>>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "CakePHP" group.
>> To post to this group, send email to cake-...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> cake-php+unsubscr...@googlegroups.com<cake-php%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/cake-php?hl=.
>>
>
>
>
> --
> http://phpirate.net
>
> --
> You received this message because you are subscribed to the Google Groups
> "CakePHP" group.
> To post to this group, send email to cake-...@googlegroups.com.
> To unsubscribe from this group, send email to
> cake-php+unsubscr...@googlegroups.com<cake-php%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/cake-php?hl=.
>

--

You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-...@googlegroups.com.
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=.


Reply via email to