CakePHP节省了foreignKeys无法正常工作

时间:2013-08-01 08:43:56

标签: php html cakephp cakephp-2.0

我有3张桌子:电脑有许多品牌,品牌属于电脑和零件。现在,我的品牌descriptioncomputer_idpart_id中包含这些字段。我有以下代码来保存我的数据。它将保存描述和part_id ....但我的computer_id根本没有保存。

通常我的URL写为http://192.168.6.253/computers/brands/add/1,其中1是computer_id。

我该如何保存?我仍然是这个框架的初学者

控制器

public function add($id = null) {
            if (!$id) {
                throw new NotFoundException(__('Invalid post'));
            }
            //Assign value to link computer_id
            $data = $this->Brand->Computer->findById($id);
            $this->set('computers', $data);

            //assign select values to parts select
            $this->set('parts', $this->Brand->Part->find('list',
                array('fields' => array('description'))));


            if ($this->request->is('post')) {
                $this->Brand->create();
                if ($this->Brand->save($this->request->data)) {
                    $this->Session->setFlash(__('Your post has been saved.'));
                    $this->redirect(array('action' => 'table/'.$id));
                } else {
                    $this->Session->setFlash(__('Unable to add your post.'));
                }
            }

        }

查看

<?php
echo $this->Form->create('Brand');
echo $this->Form->input('part_id',array('empty'=>' '));
echo $this->Form->input('description');
echo $this->Form->input('computer_id',array('type'=>hidden));
echo $this->Form->end('Save Post');
?>

1 个答案:

答案 0 :(得分:1)

如果您不需要通过表单发送计算机ID,因为它是一个网址参数...您可以像这样调整添加功能

        if ($this->request->is('post')) {
            $this->request->data['Brand']['computer_id'] = $id; //manually add the id to the request data object
            $this->Brand->create();
            if ($this->Brand->save($this->request->data)) {
                $this->Session->setFlash(__('Your post has been saved.'));
                $this->redirect(array('action' => 'table/'.$id));
            } else {
                $this->Session->setFlash(__('Unable to add your post.'));
            }
        }

这是一种非常基本的方式,无需检查数据完整性,任何人都可以轻松地将参数更改为2,但它符合您当前的设置。