CakePHP - 喜欢设计(关系类型)

时间:2010-11-29 15:47:51

标签: cakephp relationship

我正在设计一个dressess数据库/表,每个用户都可以发布/拥有多个dressess。

http://book.cakephp.org/view/1040/Relationship-Types

用户可以有多个dressess。

许多穿着属于用户。


我的用户表:

ID

名称

用户名

电子邮件

passwd的

...


我的dressess表:

ID

名称

图像

USER_ID

...

现在我需要建立关系来处理用户喜欢,用户可以喜欢他/她自己的服装或其他用户的喜欢......

我的问题是,我必须为此功能管理哪种关系类型(表和连接)。

请告诉您的想法:


喜欢

ID 用户身份 dress_id

但是,问题是,这是正确的方法:

一个。许多喜欢属于用户和许多喜欢属于礼服。

B中。用户可以拥有多个Likes和Many Likes属于用户。

提前致谢。

2 个答案:

答案 0 :(得分:3)

你几乎是对的。你错过了“一件衣服可以有多种喜欢”。

在你的模特协会中:

  1. 用户拥有多件连衣裙
  2. 用户有很多喜欢
  3. 喜欢belongsTo用户
  4. 喜欢belongsTo Dress
  5. 连衣裙很多像
  6. 连衣裙属于用户
  7. 代码应该是这样的:

    <?php  
    class User extends AppModel {  
        var $name = 'User';
        var $hasMany = array('Dress', 'Like');
    ?>
    
    <?php  
    class Like extends AppModel {  
        var $name = 'Like';
        var $belongsTo = array('User', 'Dress');
    ?>
    
    <?php  
    class Dress extends AppModel {  
        var $name = 'Dress';
        var $hasMany = array('Like', 'User');
    ?>  
    

    我省略了其他属性。您可以从烘焙中轻松生成这些关系。

答案 1 :(得分:1)

尝试hasAndBelongsToMany关系

<?php

class User extends AppModel {
    var $name = 'User';   
    var $hasAndBelongsToMany = array(
        'Dress' =>
            array(
                'className'              => 'Dress',
                'joinTable'              => 'like',
                'foreignKey'             => 'user_id',
                'associationForeignKey'  => 'dress_id',
            )
    );
}
?>