CakePHP保存了许多不保存的内容

CakePHP保存了许多不保存的内容,cakephp,Cakephp,我的CakePHP函数中的SaveMany调用有问题 下面的代码是我当前的尝试。这种方式现在可以工作了,它根本不会出错,但只有savefield会保存任何数据,saveMany,虽然它不会返回错误,但不会保存数据 请帮忙 $InvoiceArrayData = array( array('Invoicedata' => array('workdes' => $WorkHolder)),

我的CakePHP函数中的SaveMany调用有问题

下面的代码是我当前的尝试。这种方式现在可以工作了,它根本不会出错,但只有savefield会保存任何数据,saveMany,虽然它不会返回错误,但不会保存数据

请帮忙

             $InvoiceArrayData = array(
                      array('Invoicedata' => array('workdes' => $WorkHolder)),
                      array('Invoicedata' => array('price' => $PriceHolder)),
            );


            foreach($InvoiceArrayData as $InvoiceArrayKey => $InvoiceArrayValue) {
                debug($InvoiceArrayValue); 
                $this->Invoicedata->saveMany($InvoiceArrayValue['Invoicedata']);

                $this->Invoicedata->saveField('invoicejoblists_id', $MyJobIDInput);

                $this->Invoicedata->saveField('invoicejoblists_id', $MyJobIDInput);
                $this->Session->setFlash('Invoice Data Saved', 'default', array(), 'good');
                //$this->redirect($this->Auth->redirect('/AdminInvoiceSystem/'));
            }
当代码运行时,它确实使用保存的meessaged重定向,但当检查数据库时,仅保存invoicejoblist_id

你没有做对什么事吗

格伦

更新::

好的,我想做的是建立一个发票系统,我有很多表,其中一个是“invoicedatas”,其中包含“id,workdes,price,invoicejoblists\u id”。ID是键,被发送到自动计数

当用户开始制作新发票时,他们填写一张表格,保存在其他表格中。但在这种形式下,他们也会输入工作细节和工作价格

然后将其发送到我正在处理的函数,该函数不返回错误,但不保存。或者我应该说saveMany调用不起作用,saveField起作用并保存了我从另一个表调用的ID号

我忘记添加的一些代码是vars,它们只是我试图保存的$this->数据的基本持有者

       $WorkHolder = $this->data['workdes'];
   $PriceHolder = $this->data['price'];
请帮忙

格伦

好了,我试着看看能不能更详细地解释我自己

我将重新做我的工作,使它只是计划更容易的用户界面除了什么。为了解释,我现在有一个表单来设置发票作业,例如每个用户的作业号、用户id和其他位。此信息将进入表调用invoicejoblist

第二个表invoicedata仅包含workdes和price以及InvoiceJobsts_id(这将每行与发票作业详细信息链接)

但无论我做什么,我都不能把它存到工作和价格上。这是我当前的测试设置的外观:

MY.cpt文件:

$InvoiceMake = $this->Form->create('Invoice', array('url'=>'/InvoiceSet/', 'id' => 'InvoiceSet', 'inputDefaults' => array('div' => false) ) );
$InvoiceMake .= "<div id=\"InvoiceDataInput\">Please Input Description<br />";  
    $InvoiceMake .= $this->Form->textarea('Invoicedata.0.workdes');
    $InvoiceMake .= $this->Form->textarea('Invoicedata.1.workdes');
    $InvoiceMake .= $this->Form->textarea('Invoicedata.2.workdes');
    $InvoiceMake .= $this->Form->textarea('Invoicedata.3.workdes');
    $InvoiceMake .= $this->Form->textarea('Invoicedata.4.workdes');
    $InvoiceMake .= "</div>";
    $InvoiceMake .= $this->Form->submit('Make Invoice', array('div' => false, 'class' => 'ButtonInvoice'));
 $InvoiceMake .= $this->Form->end();
echo $InvoiceMake;
这些不会返回错误,但提交的workdes信息不会保存。我在我的模型中放的唯一东西是:

public $belongsTo = array(
    'Invoicejoblists' => array(
        'className' => 'Invoicejoblists',
        'foreignKey' => 'invoicejoblists_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
我做了一些检查,以确保输入不是空的,但删除它们,看看这是否是我的问题,不确定它是否正确

希望这能得到更好的解释,我已经到了正确的基础级别,只是测试保存任何数据集,但它仍然不允许我,这是因为我的模型中应该有一些东西吗

欢迎任何帮助


格伦。

我真的不知道你在问什么,但我只是瞎猜而已

您应该能够在单个
saveAll()
中保存一个项目和任意数量的子/相关项目

只需确保您的表单(或数据)格式正确,符合中的大量说明即可

例如:

echo $this->Form->create('Invoice');
echo $this->Form->input('name');
echo $this->Form->input('Price.0.amount');
echo $this->Form->input('Price.1.amount');
echo $this->Form->end('Submit');
然后,当您执行
saveAll()
(或
saveMany()
任何操作)时,您的发票将与两个价格一起保存(假设
Invoice
Price
相关)

如果您试图手动构建数据,但不知道数据应该如何格式化,则始终可以创建一个如上所述的表单,提交它,然后
debug()
查看结果以了解CakePHP将如何格式化它


希望这有助于澄清问题。

你现在所做的似乎太过分了。也许如果你解释一下你实际上想做什么,我们可以为你指出一个更好的方向。为什么你在同一次迭代中保存两次
'invoicejoblists\u id'
?还要注意,
saveMany()
用于在一个模型中同时保存多条记录。所以通常不需要使用foreach循环,因为蛋糕会一次保存所有的东西。因此,如果想要得到答案,需要指定Invoicedata模型的外观。因为我不知道你想保存什么,比如
“workdes”
“price”
是同一个表中的两列?非常感谢!我现在已经用我的表格支付了,这一切似乎都很好。
echo $this->Form->create('Invoice');
echo $this->Form->input('name');
echo $this->Form->input('Price.0.amount');
echo $this->Form->input('Price.1.amount');
echo $this->Form->end('Submit');