5

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

我有一个用于注册用户的三表结构UsersAddressesContacts。我必须使用所有三个表的信息构建一个视图,例如:

全名:[ ](来自用户)
收货地址:[ ](来自地址)
手机:[ ](来自联系人)
电子邮件地址:[ ](来自联系人)

处理这种情况的最佳方法是什么。专门用来省钱的。创建一个新的模型来表示这个,它save()本身将有一个方法(可能是数据库中的一个sql视图)创建一个控制器来处理这个bindunbinds信息的视图

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

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

4

3 回答 3

10

如果您使用最新的 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');

希望有帮助!

http://api.cakephp.org/class_model.html#49f295217028004b5a723caf086a86b1

于 2008-09-22T00:44:59.230 回答
4

CakePHP 允许您使用关系轻松维护模型之间的链接,有关完整详细信息,请参阅http://book.cakephp.org/view/78/Associations-Linking-Models-Together。然后检索正确的用户,您还将“免费”获得其地址和联系信息。

于 2008-09-21T06:59:52.520 回答
1

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

User hasOne Address, Contact
Address belongsTo User
Contact belongsTo User

在您的模型中,您可以这样定义:

class User extends AppModel {
var $name = 'User';
var $hasOne = array('Address','Contact');
..

要制作此视图,您需要user_id字段 ind地址联系人

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

$this->User->recursive = 1;
$this->set('user', $this->User->find('first', array('conditions'=>array('id'=>666)));

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

array(
  'Use' => array(
     'id' => 666,
     'name' => 'Alexander'
),
  'Address' => array(
     'id' => 123,
     'zip' => 555
),
   'Contact' => array(
     'id' => 432,
     'phone' => '555-1515'
));
于 2008-09-25T09:57:49.470 回答