我有User
模型和Boarder
模型,并非每个用户都是寄宿生,但每个寄宿生都是用户。
用户模型
class User extends AppModel
{
public $primaryKey = "user_id";
public $hasMany = 'Boarder';
}
寄宿机模型
class Boarder extends AppModel
{
public $belongsTo = 'User';
}
我的寄宿生的add.ctp查看
<?php
echo $this->Form->create('Boarder', array('role' => 'form', 'novalidate' => true));
echo $this->Form->input('user_name');
echo $this->Form->input('bdr_home_address');
echo $this->Form->end();
?>
因此,在提交期间,在控制器中添加功能现在将收到一个类似的数组
Array
(
[Boarder] => Array
(
[user_name] => 'John',
[bdr_home_address] => 'Some Street, Some City'
)
)
[user_name]
将保存在用户模型中,而[bdr_home_address]
将保存在寄宿生模型中。如我的$this->Form->create
中所示,请求将直接直接寄给寄宿生controller。那么我如何保存?
basherscontroller
class BoardersController extends AppController
{
public function add()
{
}
}
如果每个Boarder
都是User
,则Boarder
表应包括user_id
字段。
add.ctp
表格看起来像
<?php
echo $this->Form->create('Boarder', array('role' => 'form', 'novalidate' => true));
echo $this->Form->input('User.username');
echo $this->Form->input('Boarder.home_address');
echo $this->Form->submit();
echo $this->Form->end();
?>
控制器的add
功能是:
public function add()
{
if ($this->request->is('post')) {
debug($this->request->data);
if ($this->Boarder->saveAssociated($this->request->data)) {
// saved
} else {
// not saved
}
}
}