如何在 CakePHP 的下拉菜单中找到('list')HABTM 相关记录?
Posted
技术标签:
【中文标题】如何在 CakePHP 的下拉菜单中找到(\'list\')HABTM 相关记录?【英文标题】:How do I find('list') of HABTM related records for a drop-down in CakePHP?如何在 CakePHP 的下拉菜单中找到('list')HABTM 相关记录? 【发布时间】:2009-06-04 15:43:47 【问题描述】:我想生成一个带有 habtm 关系的列表(下拉列表)。例如,我有一个名为“users”的表,另一个名为“vehicles”和“users_vehicles”。
我想要的是将车辆分配给“x”用户并将其放在下拉列表中。我怎样才能做到这一点?
类用户扩展 AppModel var $hasAndBelongsToMany = array('Vehicle');【问题讨论】:
【参考方案1】:这是一种方式,可能还有其他几种方式。
$result = $this->User->Vehicle->find('all', array(
'recursive' => -1,
'conditions' => array('Ownership.user_id' => 66),
'fields' => array('Vehicle.*','Ownership.*'),
'joins' => array(
array(
'table' => 'users_vehicles',
'alias' => 'Ownership',
'type' => 'LEFT',
'foreignKey' => false,
'conditions'=> 'Vehicle.id = Ownership.vehicle_id'
)
)
));
$list = Set::combine($result,'n.Vehicle.id','n.Vehicle.name');
【讨论】:
【参考方案2】:<code>
$options['conditions']['Ownership.vehicle_id'] = $x;
$options['joins'] = array(
array(
'table' => 'ownership',
'alias' => 'Ownership',
'type' => 'Left',
'conditions' => 'Vehicle.id = Ownership.vehicle_id'
)
);
$this->set('vehicles', $this->Vehicle->find('list', $options));
</code>
【讨论】:
以上是关于如何在 CakePHP 的下拉菜单中找到('list')HABTM 相关记录?的主要内容,如果未能解决你的问题,请参考以下文章
Cakephp:如何验证一个数组以确保它至少有五个或更多项目