【问题标题】:Problem saving data with cakePHP使用 cakePHP 保存数据的问题
【发布时间】:2011-09-17 05:19:37
【问题描述】:

我在使用 cakePHP 保存数据时遇到了一个奇怪的问题。我会边走边解释的。

这是控制器标头以防万一:

var $helpers = array('Html','Form','Js','Ajax');
    var $components = array('RequestHandler');
    var $name = 'Parts';
    var $paginate = array(
                        'limit'=>25,
                        'order'=>array('Part.customer'=>'asc')
                        );

这是我保存表单数据的控制器代码:

//list items for table
    $parts = $this->Paginate('Part');
    $this->set('parts',$parts); ]

//save data
if(!empty($this->data)){    
        if ($this->Part->save($this->data)) {
           $this->Session->setFlash('Part added to database.','default',array('class'=>'flash-success'));            
           $this->redirect(array('action' => 'index'));        
        }else{
           $this->Session->setFlash('Failed to add part to database, please try again.','default',array('class'=>'flash-failure'));            
           $this->redirect(array('action' => 'index'));        
        }
    }

这是我在视图中的表单:

        echo $this->Form->create('Part');
        echo $this->Form->input('customer');
        echo $this->Form->input('part_number');
        echo $this->Form->input('foil');
        echo $this->Form->input('base');
        echo $this->Form->input('base_color');
        echo $this->Form->input('description',array('cols'=>21));
        echo $this->Form->input('moulding');
        echo $this->Form->input('foil_diameter');
        echo $this->Form->input('tool');
        echo $this->Form->input('impressions');
        echo $this->Form->input('spray_jig');
        echo $this->Form->input('prep');
        echo $this->Form->input('pack');
        echo $this->Form->end('Add Part');

现在,如果我将信息输入到表单中并包括 spray_jig,则 from 将保存并且数据将被保存。如果我在 spray_jig 之前填写表格,表格将不会提交。我还没有进行任何数据验证,字段是 VARCHAR 的 INT 和一个 TEXT 的混合。

这让我很困惑,你能提出问题和/或解决问题的好方法吗?

注意: spray_jig 是标准的 int(11) 字段。

【问题讨论】:

  • 数据库是否允许在 spray_jig 上使用空值?
  • 您确定您在数据库中有名为 spray_jig 的字段吗?
  • 我检查了所有字段的拼写,没有问题。所有字段都将 NULL 设置为 no。

标签: php cakephp


【解决方案1】:

我的建议是将应用程序更改为调试模式并查看它正在运行的 sql,然后复制 sql 并尝试在您的数据库中运行它。

【讨论】:

    【解决方案2】:

    我找到了解决方案 - INT 字段似乎不能有空值。输入所有 INT 字段后,表单将提交。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      相关资源
      最近更新 更多