如何在cakephp中显示来自不同相关模型的数据?

时间:2013-06-18 18:02:05

标签: php cakephp cakephp-appmodel

我是CakePHP的新手,我正在尝试构建一个简单的webapp。

我有3个型号:属性,操作和类别。

我的关系是:

Category -> hasMany -> Property
Operation -> hasMAny -> Property

每个属性都有类别(cat_id)和操作(op_id)的外键。

我想要做的是使用类别和操作的NAME(相应表中的字段是'name')显示每个属性(在相应的视图中),而不是ID。我怎么能这样做?

更新:

所需输出的一个例子是:

ID    category    operation description ....

1     House       Sell       a house   ....

我现在拥有的是

ID    category    operation description ....

 1     2          3           a house   ....

2和3分别是'house'(category,cat_id)和'sell'的相应ID(操作,op_id)

这是类别模型的代码:

class Category extends AppModel{
    public $hasMany = array(
    'Property'=>array(
        'foreignKey' => 'cat_id'
    ));
}

提前谢谢。

2 个答案:

答案 0 :(得分:0)

  

属性(id,name,category_id,operation_id)

     

类别(id,name)

     

操作(id,name)

当您使用递归= 1或2对属性表执行查找时,您将自动获得所有相关数据

答案 1 :(得分:0)

找到解决方案!比我想象的要容易。

首先,使用'hasMany'并不理想。我所做的是在属性模型中使用关系“belongsTo”:

class Property extends AppModel{
    var $name = 'Property';
    public $belongsTo = array(
        'Category' => array(
            'foreignKey' => 'idCat'         
        ),
        'Operation' => array(
            'foreignKey' => 'idOp'              
        )
    );
}

现在神奇:每当我在PropertiesController中执行find()时,我得到的是一个包含属性数据的二维数组,以及它所属的表的数据。 :

Array
(
   [Property] => Array
        (
        [id] => 1
    )
[Category] => Array
    (
        [id] => 2
        [name] => House
    )
[Operation] => Array
    (
        [id] => 3
        [name] => Sell
    )

) 现在在视图中,而不是,例如,['Property'] ['idCat']我只使用['Category'] ['name'],一切正常。

感谢您的帮助!

P.S。:抱歉任何误解,而不是母语人士。