So there's the hard part... understanding how find() works! I think
I'm pretty close to understanding it, but for what I was doing I
simply ran out of time and could not justify struggling with find()
anymore. I read so many articles on Google, read and re-read the
sections of the cookbook, etc. Maybe I'm dense but I spent hours
trying to get find() to return the data I wanted. Check out my blog
post at 
http://erturne-cakephp.blogspot.com/2008/12/retrieving-model-data-find-vs-query.html
for a description of the problem and a few of the things I tried.

On Dec 19, 6:56 pm, teknoid <[email protected]> wrote:
> query() is not a recommended practice...
> besides a few points you've mentioned (and don't think that
> portability is not important, you'd be surprised what happens when
> oracle invests $1M into your company, but now you gotta switch
> DB's ;)), i've outlined a few more here:
>
> http://teknoid.wordpress.com/2008/05/09/cakephp-and-custom-sql/
>
> besides, once you understand how find() works, it's becomes a lot
> easier to manage/maintain than writing custom SQL
>
> On Dec 19, 6:26 pm,erturne<[email protected]> wrote:
>
> > I have to ask... if you have to take extra measures to specify your
> > join conditions, why not just provide a method in a model that uses
> > query() with a simple-to-understand SQL statement? All these find()
> > contortions, while interesting, may not be the easiest to maintain
> > later on when you have to decipher what you were trying to do. I
> > suppose you have to worry about SQL statement portability, but really
> > how often do you have to move your database from one server type to
> > another? And if you keep all your queries in your models at least it's
> > easy to find what needs to change should you move to a different
> > database.
>
> > On Dec 19, 12:51 pm, Webweave <[email protected]> wrote:
>
> > > OK, it depends on what you are really trying to fetch. Are you trying
> > > to restrict the Advert results to just those that have data in the
> > > hasMany tables, or are you trying to restrict the child table values ?
>
> > > If it's the former, I would just use a condition that includes a
> > > select for that condition specifically. For instance, in my
> > > VolunteerCake application, I have a structure where I have a Job that
> > > has signup Slots associated with it. I want to list jobs with
> > > available slots (meaning there are not more Slot rows than a max field
> > > in the jobs table), so I use a condition like:
>
> > >         $whereArray =  array(
> > >                             'AND' => array(
> > >                                 'Slot.max_signups > (select count(1)
> > > from user_slots s2 where s2.slot_id = Slot.slot_id)',
> > >                                 'Slot.job_id = '.$id
> > >             )
> > >         );
>
> > > Note that the "select count" is enclosed in parens, and compared to
> > > the Slot.max_signups. This correlated sub-query causes the database to
> > > do an implicit join, without Cake having to understand the
> > > relationship.
>
> > > If it's the latter, you can add your condition to the belongsTo or do
> > > a separate find for the related data.
>
> > > On Dec 19, 1:53 am, dev <[email protected]> wrote:
>
> > > > i posted code here:http://bin.cakephp.org/saved/40741
>
> > > > How to join Image and Option tables if i want to set these find
> > > > conditions in Advert?
>
> > > > I tried Containable (test2 function), but it selects all Adverts, and
> > > > if i set conditions in first paginate array - it generates the same
> > > > error, bicause tables don't join.
>
> > > > How to solve this problem?
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to