I had similar feelings to this when I first had to get some complex
data through CakePHP, thinking the results of a simple mysql_query or
an object would be much easier to work with than a 5 level deep array!

>>Yet I still have nothing but these big arrays to deal with.

That's the key point, and there are other ways to deal with it apart
from getting objects back from your results:

-- Use generateList where you can

generateList returns a simple array, and takes various params- it's
surprisingly powerful.

-- Filter the results of your cake queries to make the arrays simpler

The set class can help return simpler arrays  (see the thinkingphp
blog for a good post on this), there's also a behaviour in the bakery
for simpler array results, and (perhaps in response to your previous
post) someone recently linked to a way to objectify the result arrays.

-- run sql manually via model->query() in a method in your model,
like
::getSimpleResultsForMyBigQuery(), and return the data just how you'd
like.

-- use SQL views: often a SQL view is a nice way to take complex
queries out of your code.

I hope with all those tools at your disposal, the use of results
arrays won't be a 'deal breaker' for you - It wasn't for me.


On Jan 7, 8:42 pm, Robby Anderson <[EMAIL PROTECTED]> wrote:
> Two ways jump out at me right off the bat. First, think of the default
> cake Model as a data access class only, and then define a business-
> logic class (that doesn't extend AppModel) to encapsulate your desired
> model functionality.
>
> // Get results from data access model
> $results = $this->SomeModel->findWhatever();
>
> // Instantiate business logic class, assigning results to it, and then
> slice bread
> $myModel = new MyModelWithBusinessLogic($results);
> $myModel->sliceBread();
>
> Or just use afterFind() in a model, assigning the results to a model
> property, and build your business logic into the model that way.
>
> function afterFind( $results ) {
>     $this->_results = $results;
>
> }
>
> function sliceBread() {
>     if ( empty($this->_results) {
>         return false;
>     }
>
>     // slice bread!
>
> }
>
> $this->SomeModel->findWhatever();
> $this->SomeModel->sliceBread();
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to cake-php@googlegroups.com
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