Wednesday, December 2, 2009

HABTM questions

I’ve been scouring the web for a while trying to figure this out.  My brain is fried, so I need some help.

 

I have a model called Containers, a model called Assets and HABTM table called AssetsContainer.

 

So a container can have many assets…

 

The first question I have is when I’m doing this operation

 

$this->Container->read(null,$id);

 

How do I paginate the assets…  right now I am only testing so there’s only 2 assets linked to the container.  Am I assuming right that there would be an endless number of assets?  If not, still, how do I paginate this data?

 

Next question is, each asset can be one of three different tables, Photos, Profiles, Blogs.  Each of these models has a hasOne relationship of asset_id in each model.  How do I get the read() function to retrieve this data automatically?  My first instinct is to put a nominal field for each potential table of photo_id, profile_id and blog_id and update the model for Asset with the hasOne of each…. This way it will grab the data right?

 

Also, is this an instance where instead of read, I use find(‘all’) instead?

 

Many thanks,

 

Alan

 

Example of my Container->read below

 

Array
(
    [Container] => Array
        (
            [id] => 1
            [user_id] => 1
            [title] => Default
            [total_items] => 
            [mime_type] => image
            [photo_id] => 1
            [created] => 2009-12-02 11:53:21
            [modified] => 2009-12-02 11:53:21
            [is_fan_club] => 0
            [fan_club_requirements] => 
            [nsfw] => 0
            [ordering] => 
            [active] => 
            [deleted] => 
        )
 
    [User] => Array
        (
            [id] => 1
            [user_type_id] => 2
            [user_group_id] => 3
            [username] => user
            [email] => 
            [name] => 
            [gender_id] => 1
            [password] => 
            [salt] => 
            [birthday] => 1991-11-23
            [created] => 2009-11-23 21:41:24
            [modified] => 2009-11-24 15:24:59
        )
 
    [Photo] => Array
        (
            [id] => 1
            [user_id] => 1
            [asset_id] => 15
            [created] => 1259625133
            [modified] => 1259625133
            [title] => 
            [deleted] => 
            [file_name] => c0a80aa6-5aab-f111.jpg
            [rel_path] => users/1/2009/11
            [caption] => 
            [server_id] => 1
            [is_featured] => 
        )
 
    [Asset] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [asset_type_id] => 
                    [user_id] => 
                    [created] => 2009-11-30 16:12:05
                    [modified] => 2009-11-30 16:12:05
                    [ordering] => 0
                    [allow_comments] => 1
                    [allow_rates] => 1
                    [nsfw] => 0
                    [total_views] => 0
                    [total_rates] => 0
                    [total_rating] => 0
                    [total_comments] => 0
                    [AssetsContainer] => Array
                        (
                            [id] => 1
                            [asset_id] => 1
                            [container_id] => 1
                            [ordering] => 1
                            [created] => 
                            [modified] => 
                        )
 
                )
 
            [1] => Array
                (
                    [id] => 2
                    [asset_type_id] => 
                    [user_id] => 
                    [created] => 2009-11-30 16:13:47
                    [modified] => 2009-11-30 16:13:47
                    [ordering] => 0
                    [allow_comments] => 1
                    [allow_rates] => 1
                    [nsfw] => 0
                    [total_views] => 0
                    [total_rates] => 0
                    [total_rating] => 0
                    [total_comments] => 0
                    [AssetsContainer] => Array
                        (
                            [id] => 2
                            [asset_id] => 2
                            [container_id] => 1
                            [ordering] => 2
                            [created] => 
                            [modified] => 
                        )
 
                )
 
        )
 
)

 

No comments: