Since all data is returned as an array structure (and not objects) it
is "dead" data and not "live" objects. It has to be laid out for you
in advance.
query vs. find
query is pretty much a wrapper for straight SQL queries. Since you
query "pictures" that is what you get back. Querying "pictures AS
Picture" will take you one step towards what is returned from Cake's
find-methods. Using find you are asking Cake to find data for Models.
Using qurey you are only using Cakes dbo layer to ask sql queries.
find('first') vs. find('all')
When asking for a single record you will get back an array with the
model's name as a key to access its data. $data['Picture']...
When asking for multiple records you will get back an numeric array.
Each one of the elements in that array will be identical to what the
single record returned. $data[2]['Picture']...
Why the ['Picture']?
My take on why this structure was chosen is that is allows the same
view-elements to render from many different find operations. If
Article hasMany Picture you would access the picture data the same
from Article as from Picture directly.
Picture->find returns an array with a Picture key
Article->find returns an array with both Article and Picture keys.
A view element used to show pictures anywhere in the application would
never need to know that the pictures were found as related data or
not. The same goes for the form helper and any other code used to
manipulate data.
At least that is one possible reason. I was not in the room when they
came up with it ;)
I hope that was helpful. Just remember that Cake is (or once was)
similar to Rails in an overall perspective on things but not really in
the details.
On Sep 26, 3:49 am, alex_c <alex.cure...@gmail.com> wrote:
> Hi all,
>
> I am new to CakePHP. I've used both PHP (with no frameworks) and Ruby
> on Rails in the past, and decided that learning a PHP framework might
> make PHP projects a lot more pleasant. I chose CakePHP because I'm
> familiar with Rails - so far it's great, but I do have to wrap my head
> around the differences.
>
> I'm a bit unsure on what is the "CakePHP way" to use data returned
> from the model. To keep things simple, let's say I have a model
> Picture, with only one field, id.
>
> What's throwing me off is that the data returned doesn't always seem
> to follow a consistent format. For example,
>
> $this->Picture->findById("1")
>
> will return
>
> Array
> (
> [Picture] => Array
> (
> [id] => 1
> )
> )
>
> but
>
> $this->Picture->query("SELECT * FROM pictures WHERE id=1")
>
> will return
>
> Array
> (
> [0] => Array
> (
> [pictures] => Array
> (
> [id] => 1
> )
> )
> )
>
> It feels a bit odd to have to write, for example, $pic["Picture"]
> ["id"] everywhere, rather than $pic["id], but I can live with that.
>
> What's really throwing me off is $pic["Picture"]["id"] versus
> $pic["pictures"]["id"]. Having to account for that every time I
> either read or use data seems... well... it really doesn't feel right.
>
> So, am I missing anything? Am I supposed to massage the data returned
> from Find and Query methods in the controller? How do you guys use it
> in your views and helpers, to keep things as simple and consistent as
> possible?
>
> I'm using 1.2.0.7296-RC2.
>
> Thanks for any help!
>
> Alex
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---
No comments:
Post a Comment