CakePHP多模型视图

CakePHP多模型视图,cakephp,entity-relationship,model-driven,cakephp-1.2,Cakephp,Entity Relationship,Model Driven,Cakephp 1.2,我正在用CakePHP创建一个网站,我对它有点陌生。我在这件事上找不到好的资源,所以你来了: 我有一个用于注册用户的三表结构:用户、地址和联系人。我必须构建一个包含所有三个表信息的视图,如: Full Name: [ ] (from Users) Shipping Address: [ ] (from Address) Mobile Phone: [ ] (from Contact) e-Mail Address:

我正在用CakePHP创建一个网站,我对它有点陌生。我在这件事上找不到好的资源,所以你来了:

我有一个用于注册用户的三表结构:
用户
地址
联系人
。我必须构建一个包含所有三个表信息的视图,如:

Full Name: [ ] (from Users) Shipping Address: [ ] (from Address) Mobile Phone: [ ] (from Contact) e-Mail Address: [ ] (from Contact) 全名:[](来自用户) 发货地址:[](发件人地址) 手机:[](来自联系人) 电子邮件地址:[](来自联系人) 处理这种情况的最佳方法是什么。特别是为了省钱。创建一个新模型来表示这一点,该模型本身将有一个
save()
方法(可能是数据库中的一个sql视图)创建一个控制器来处理此视图,该视图将
bind
s或
unbind
s信息

我仍然想知道我将如何处理这两个联系人,因为它们将是两个不同的
INSERT


任何我能挖掘的提示或资源我都会很高兴。

CakePHP允许您使用关系轻松维护模型之间的链接,有关完整的详细信息,请参阅。然后检索正确的用户,您还将获得“免费”、其地址和联系信息。

如果您使用的是最新的1.2代码,请查看api中的Model::saveAll

你的观点可能是这样的:

echo $form->create('User', array('action' => 'add');
echo $form->input('User.name');
echo $form->input('Address.line_1');
echo $form->input('Contact.tel');
echo $form->end('Save');
然后,在用户控制器添加方法中,您将有如下内容:

...

if($this->User->saveAll($this->data)) {
 $this->Session->setFlash('Save Successful');
 $this->redirect(array('action' => 'index'));
} else {
 $this->Session->setFlash('Please review the form for errors');
}

...
var $hasOne = array('Address', 'Contact');
在您的用户模型中,您将需要:

...

if($this->User->saveAll($this->data)) {
 $this->Session->setFlash('Save Successful');
 $this->redirect(array('action' => 'index'));
} else {
 $this->Session->setFlash('Please review the form for errors');
}

...
var $hasOne = array('Address', 'Contact');
希望有帮助

3种型号:用户、地址、联系人

在模型中,定义如下:

class User extends AppModel {
var $name = 'User';
var $hasOne = array('Address','Contact');
..
要创建此视图,您需要用户id字段ind地址和联系人表

要在视图中使用它,只需调用递归为1的用户模型上的find(顺便说一句,用户控制器仅使用用户模型)

这将为您的视图生成此数组:

array(
  'Use' => array(
     'id' => 666,
     'name' => 'Alexander'
),
  'Address' => array(
     'id' => 123,
     'zip' => 555
),
   'Contact' => array(
     'id' => 432,
     'phone' => '555-1515'
));

你好我改变了我的问题以反映我的意图,如何保存,如何创建注册控制器和视图CakePHP管理自己保存组合对象。这意味着,如果加载用户并更改其联系人,则在用户对象上调用CakePHP中的隐式“save”方法时,联系人对象也将更新。