I'll try to be a bit more specific: my main problem is that a Widget
belongs only to the combination of layer and page, and is linked
through layer_id and page_id. A page in turn only has an association
with a layer through the design model.

Right now I have this:

class Page extends AppModel
{
var $name = 'Page';

        var $belongsTo = array('Design' =>
                         array('className'     => 'Design',
                                                           'conditions'    => 
'',
                               'order'         => '',
                               'foreignKey'    => 'design_id'

                         )
                                );


var $hasMany = array('Widget' =>
                         array('className'     => 'Widget',
                                                           'conditions'    => 
'',
                               'order'         => 'Page.url',
                               'foreignKey'    => 'page_id'

                         )
                                );

}

class Layer extends AppModel
{
    var $name = 'Layer';

        // a layer holds many widgets
        var $hasMany = array('Widget' =>
                         array('className'     => 'Widget',
                                                           'conditions'    => 
'',
                               'order'         => 'Widget.order_id
DESC',
                               'limit'         => '',
                               'foreignKey'    => 'layer_id',
                               'dependent'     => true,
                               'exclusive'     => false,
                               'finderQuery'   => ''
                         )
                                );
        // a layer belongs to a design
        var $belongsTo = array('Design' =>
                         array('className'     => 'Design',
                               'conditions'    => '',
                               'order'         => 'Design.id DESC',
                               'limit'         => '',
                               'foreignKey'    => 'design_id',
                               'dependent'     => true,
                               'exclusive'     => false,
                               'finderQuery'   => ''
                         )

                                );

}

But I think this isn't the right approach, because I get the error:
SQL Error in model Page: 1052: Column 'id' in order clause is
ambiguous

The error only goes away when I remove the association between Page-
>Widget

I could also do a custom query:
query("SELECT * from widgets_table WHERE page_id = $page_id AND
layer_id = $layer_id);

but I think that would be a hack. I just don't know how to set up the
associations.

Any help is appreciated!


On 13 apr, 00:03, "gerbenzomp" <[EMAIL PROTECTED]> wrote:
> I've been trying to get the associations right, but I somehow got lost
> in my thinking about how every model relates to the other. Maybe
> someone can have a fresh view on my problem.
>
> I've put all my models between "" in this explanation, so it is easier
> to read.
>
> I have several models:
>
> All the "Pages" in a "Site" share the same "Design"
> Each "Design" has many "Layers", and each "Layer" can have many
> "Widgets", BUT the widgets in each layer are also dependant of the
> current "Page".
>
> Every "Page" in a site uses the same "Design" and thus the same
> "Layers", but the widgets in the layers can vary from page to page.
>
> I hope I'm being clear in my description above.
>
> I was able to set up the relations to a good degree, but got stuck
> when I realised that widgets don't belong to a layer, but ONLY to the
> combination of "Page" and "Layer". And layers belong to a design, but
> widgets DON'T belong to a design.
>
> Any ideas how this would translate to Cake associations?
>
> Any help in my thinking about this would be appreciated as well :)


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" 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