我是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'
));
}
提前谢谢。
答案 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。:抱歉任何误解,而不是母语人士。