Are you using GUID's id's and foregin_keys?
If not, you could set yourself for some serious trouble down the road.

Also, take a look at the polymorphic behavior, I think it might be
some help here.

On Nov 8, 6:43 am, Marcus Silva <[EMAIL PROTECTED]> wrote:
> I think your solution is very good, but it does not suit my needs as
> the system I am building is rather complex.
>
> Instead I am going to use the following solution to store all my
> images:
>
> Images table:
> id
> foreign_id   //user_id
> associated_model //User...    -- Image->belongsTo = User/Shop/Album/
> Profile/More....
> upload_comment // belongsTo $this->AssociatedModel->name
> filename
> full_path //stored in files.image.associated_model.filename
> has_thumb
> thumbs = serialized array  //small / large / medium / xlarge
> ext
> created
> updated
>
> -----------------
>
> Then albums will have the following association:
>
> --Profile
> var $hasMany = array(
>         'Image' => array(
>                 'className' => 'Image',
>                 'foreignKey' => 'foreign_id', //profile_id
>                 'conditions' => array( 'Image.associated_model' => 'Profile'),
>         )
> );
>
> --Shop
> var $hasMany = array(
>         'Image' => array(
>                 'className' => 'Image',
>                 'foreignKey' => 'foreign_id', //shop_id
>                 'conditions' => array( 'Image.associated_model' => 'Shop'),
>         )
> );
>
> --Product
> var $hasAndBelongsToMany = array(
>         'Image' => array(
>                         'className'                             => 'Image',
>                         'joinTable'                     => 
> 'shop_images_products',
>                         'foreignKey'                    => 'product_id',
>                         'associationForeignKey'         => 'image_foreign_id',
>                         'fields'                                        => '',
>                         'conditions' => array( 'Image.associated_model' => 
> 'Shop'),
>                         'unique'                        => true,
>         )
> );
>
> Thats the solution I will be using, hope it works.
>
> I might even write a tutorial about this later....
>
> Thank you all once again for helping out.
>
> On Nov 8, 8:21 am, Adam Royle <[EMAIL PROTECTED]> wrote:
>
> > Well, not really, you just need one images table for that.
>
> > Then in your models you just have an image_id, and set your
> > associations up like this:
>
> > class Shop extends AppModel {
>
> >         var $belongsTo = array(
> >                 'Image' => array('className' => 'Image', 'foreignKey' => 
> > 'image_id')
> >         );
>
> > }
>
> > class Album extends AppModel {
>
> >         var $belongsTo = array(
> >                 'Image' => array('className' => 'Image', 'foreignKey' => 
> > 'image_id')
> >         );
>
> > }
>
> > If you need more than one image associated, then just use a habtm
> > association and create a join table!
>
> > I've been using this method for over a year and a half and I've never
> > thought about doing it any other way.
>
> > Cheers,
> > Adam
>
> > On Nov 8, 9:29 am, Marcus Silva <[EMAIL PROTECTED]> wrote:
>
> > > That does help Adam.  Thats exactly the way I will do it now.
>
> > > But I think I will end up with many tables which is what really puts
> > > me off.  But thats not a problem.
>
> > > Should have ShopImage, AlbumImage ProfileImage and so on...
>
> > > Many thanks to all for helping out.
>
> > > Cheers
>
> > > On Nov 7, 10:42 pm, Adam Royle <[EMAIL PROTECTED]> wrote:
>
> > > > The way I do this:
>
> > > > Tables:
> > > > - images
> > > > - videos
> > > > - documents
>
> > > > Each of the tables has the standard fields like mime_type, filesize,
> > > > path, etc. And each custom type has any extra fields that may be
> > > > necessary (width, height, duration, bitrate, etc).
>
> > > > Behaviors:
> > > > - FileBehavior
> > > > - ImageBehavior extends FileBehavior
> > > > - VideoBehavior extends FileBehavior
>
> > > > The reason I split into multiple tables is for associations. Often I
> > > > want to control what media types are associated with my models. Eg. I
> > > > might want a model to have many images but just one video. Plus, this
> > > > prevents you from having to constantly check the media type if you're
> > > > iterating through one array with multiple media types.
>
> > > > Hope that helps.
>
> > > > Cheers,
> > > > Adam
>
> > > > On Nov 8, 3:06 am, Marcus Silva <[EMAIL PROTECTED]> wrote:
>
> > > > > Hi folks,
>
> > > > > I am trying to create system which will let users upload media to the
> > > > > server,  the question that I ask is weather using a single table to
> > > > > store the uploaded files is better than using separate tables to store
> > > > > each file type in terms of coding.
>
> > > > > Seems to me that if I use the multiple table I will be creating
> > > > > exactly the same data, but in a different table.
>
> > > > > Example:  audios,videos,images etc....
>
> > > > > My table structure:
>
> > > > > CREATE TABLE `uploaded_files` (
> > > > >   `id` int(11) unsigned NOT NULL auto_increment,
> > > > >   `foreign_id` int(10) unsigned NOT NULL,
> > > > >   `model` varchar(255) NOT NULL COMMENT 'Associated model name',
> > > > >   `media` varchar(55) NOT NULL,
> > > > >   `filename` varchar(255) default NULL,
> > > > >   `ext` varchar(10) default NULL,
> > > > >   `mime` varchar(55) default NULL,
> > > > >   `filesize` int(11) NOT NULL,
> > > > >   `webpath` varchar(255) NOT NULL COMMENT 'Web path to show file',
> > > > >   `full_path` text NOT NULL COMMENT 'Full path to file_src',
> > > > >   `hasThumb` tinyint(1) unsigned NOT NULL,
> > > > >   `thumbs` text,
> > > > >   `width` int(11) default NULL,
> > > > >   `height` int(11) default NULL,
> > > > >   `description` varchar(155) default NULL,
> > > > >   `created` datetime default NULL,
> > > > >   `updated` datetime default NULL,
> > > > >   PRIMARY KEY  (`id`)
> > > > > ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
>
> > > > > Basically, I am looking for an easy solution that will reduce the
> > > > > amount of code I write....
>
> > > image> > Hope some of you guys can help.
>
>
--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to