如何在 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 3.x 视图 URL 的下拉菜单

Cakephp:如何验证一个数组以确保它至少有五个或更多项目

如何在 Swift 3 中制作下拉菜单

delphi 如何让Combobox下拉菜单时,显示一个树形结构

材料设计选择下拉菜单

如何在 Shiny 中更改回归模型表单下拉菜单中的预测变量?