首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP SaveMany未保存

CakePHP SaveMany未保存
EN

Stack Overflow用户
提问于 2013-06-24 21:15:57
回答 1查看 2.9K关注 0票数 0

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

下面的代码是我当前的尝试。这种方法现在可以工作了,它根本不会产生任何错误,但只有保存字段会保存任何数据,saveMany,尽管它没有返回错误也不保存数据?

请帮帮忙?

代码语言:javascript
复制
             $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/'));
            }

当代码运行时,它使用保存的消息重定向,但当检查数据库时,只保存invoicejoblist_id。

有没有没做过的事对吗?

格伦

更新::

好的,所以我要做的是建立一个发票系统,我有一些表,其中一个'invoicedatas‘,其中包含'id,workdes,price,invoicejoblists_id’。ID是密钥,并被发送到自动计数。

当用户开始开具新发票时,他们填写一个表单,该表单保存在其他表中。还可以在此表单中输入工作详细信息和该工作的价格。

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

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

代码语言:javascript
复制
       $WorkHolder = $this->data['workdes'];
   $PriceHolder = $this->data['price'];

请帮帮忙......

格伦。

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

我将重新做我的工作,让它更容易为UI做计划,而不是任何东西。为了解释,我现在将有一个表单来设置发票作业,例如每个用户的jobnumber、用户id和其他位。此信息将进入名为invoicejoblist的表中

第二个表invoicedata只保存工作和价格以及invociejoblists_id (这会将每一行与发票作业详细信息链接起来)。

但无论我怎么做,我都不能把它存到工作量和价格上。下面是我当前的测试设置:

我的.cpt文件:

代码语言:javascript
复制
$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;

我在控制器中的测试函数:

代码语言:javascript
复制
function test() {
    debug($this->data); 
    $HoldeME = $this->data;
    $this->loadModel('Invoicedata');
            $this->Invoicedata->saveAll($HoldeME);
}

这些不会返回错误,但提交的工作信息将不会保存。我在我的模型中唯一放入的东西是:

代码语言:javascript
复制
public $belongsTo = array(
    'Invoicejoblists' => array(
        'className' => 'Invoicejoblists',
        'foreignKey' => 'invoicejoblists_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

我确实做了一些检查,以确保输入不是空的,但删除它们,看看这是否是我的问题,不确定它是正确的还是错误的。

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

欢迎任何帮助

格伦。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-25 05:01:52

我真的不知道你在问什么,但我是在偷偷摸摸。

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

只需确保您的表单(或数据)按照CakePHP book中的丰富指令正确格式化即可。

举个例子:

代码语言:javascript
复制
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() -随便什么)时,您的发票将节省两个价格(假设InvoicePrice相关)。

如果您尝试手动构建数据,但不知道应该如何格式化数据,则始终可以创建一个类似于上面的表单,提交它,然后对结果执行debug()操作,以查看CakePHP将如何格式化它。

希望这能帮你弄清楚。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17276442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档