我已经做了很多搜索,但还没能解决这个问题。我有一个用户注册表单,用户可以在注册时选择多个商店分支作为收藏夹。我将这种关系设置为HABTM。
我能够将商店分支显示为多个复选框,但我需要在每个复选框的标签中显示商店名称(商店分支属于商店名称)以及分支名称。类似的东西:
Levi's - Canal Walk
其中Canal Walk是分行名称,而Levi's是商店名称(来自不同的表格)
任何人都可以分享一些关于如何做到这一点的见解吗?
答案 0 :(得分:0)
我没有对此进行过测试,但它可能有效(或帮助您沿着正确的道路前进):
$branches = $this->Branch->find('list', array(
'fields' => array('Branch.id', 'CONCAT(Store.name, " - ", Branch.name)'),
'joins' => array(
array(
'table' => 'stores',
'alias' => 'Store',
'type' => 'inner',
'foreignKey' => false,
'conditions' => array('Branch.store_id' => 'Store.id')
)
)
));
在你的控制器中设置它,或者通过将其放在模型中来保持干燥,例如findFullList()
希望有所帮助!
答案 1 :(得分:0)
我会在视图中完成所有这些操作。如果您的HABTM关系设置正确,那么Store模型的查询应该是这样的:
$stores = $this->Store->findAll();
//Returns
Array([0] => Array(
'Store' => array(),
'Branch' => array(
[0] => array(),
[1] => array()...));
然后将$ stores变量传递给视图,并使用双嵌套循环遍历它。
foreach($stores as $store){
foreach($store['Branch'] as $branch){
//Code to output checkbox by using $branch['name']
}
}