我想建模以下简单的关系:
一名乘客属于一辆汽车; 一辆车有很多乘客.
乘客表有一个id和Car_id列,Car表有一个id列.
我的模型看起来像这样:
<?php
class Passenger extends AppModel {
var $name = 'Passenger';
var $belongsTo = 'Car';
} ?>
Run Code Online (Sandbox Code Playgroud)
和
<?php
class Car extends AppModel {
var $name = 'Car';
var $hasMany = array (
'Passenger' => array (
'className' => 'Passenger',
'foreignKey' => 'car_id'
)
);
}
?>
Run Code Online (Sandbox Code Playgroud)
和我的添加Passenger .ctp看起来像这样:
<?php
echo $this->Form->create('Passenger');
echo $this->Form->input('car_id');
echo $this->Form->end('Save');
?>
Run Code Online (Sandbox Code Playgroud)
当我访问页面添加乘客时,我看到的只是一个空的下拉框.是否还有一个额外的步骤,我必须采取所有汽车填充保管箱?
首先,您忘记提及belongsToPassenger 模型中的关系:
<?php
class Passenger extends AppModel {
var $name = 'Passenger';
var $belongsTo = array('Car');
}
?>
Run Code Online (Sandbox Code Playgroud)
接下来,在控制器的相应操作中,您需要list从数据库中获取所有汽车的 a,并将其设置为模型变量 ($cars) 的复数形式。你会这样做:
$cars = $this->Passenger->Car->find('list');
$this->set(compact('cars'));
Run Code Online (Sandbox Code Playgroud)
这会将car_id输入字段转换为包含填充信息的下拉列表。
HTH。