gpt4 book ai didi

Magento 模型-> 保存 () 不工作

转载 作者:行者123 更新时间:2023-12-04 04:17:16 25 4
gpt4 key购买 nike

您好,我的模型 save() 函数不起作用。 Magento 缓存已关闭。我的代码如下:

$newInventory = Mage::getModel('reservation/newinventory');
Mage::log( get_class( $newInventory ) ); //print Apptha_Reservation_Model_Newinventory

$newInventory->setEntityId( $productId );
$newInventory->setRoomTypeId( $roomTypeId );
$newInventory->setRoomsCount( $roomsCount );
$newInventory->setDateFrom( $checkInStamp );
$newInventory->setDateTo( $checkOutStamp );
$newInventory->setOrderId( $orderId );

$query = $newInventory->save();

Mage::log( "save query below: " ); //I get this string
Mage::log( $query->toString() ); //return 2012-10-15T06:00:58+00:00 DEBUG (7): 17, 7, 8,
//1349913600, 1349913600, 300000040, 12

这是我的代码\local\Apptha\Reservation\etc\config.xml

 <models>
<reservation>
<class>Apptha_Reservation_Model</class>
<resourceModel>reservation_mysql4</resourceModel>
</reservation>
<reservation_mysql4>
<class>Apptha_Reservation_Model_Mysql4</class>
<entities>
<newinventory>
<table>apptha_booking_hotel_newinventory</table>
</newinventory>
</entities>
</reservation_mysql4>
</models>
<resources>
<reservation_setup>
<setup>
<module>Apptha_Reservation</module>
<class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</reservation_setup>
<reservation_write>
<connection>
<use>core_write</use>
</connection>
</reservation_write>
<reservation_read>
<connection>
<use>core_read</use>
</connection>
</reservation_read>
</resources>

我做错了什么?为什么新行没有出现在数据库中?

更新 1

在我的 index.php 中有

error_reporting(E_ALL ^ E_NOTICE);

//if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
Mage::setIsDeveloperMode(true);
ini_set("display_errors", 1);
//}

更新 2

下面是我的code\local\Apptha\Reservation\Model\newinventory.php

class Apptha_Reservation_Model_Newinventory extends Mage_Core_Model_Abstract{

protected function _construct(){
$this->_init('reservation/newinventory');
}
}

下面是我的code\local\Apptha\Reservation\Model\Mysql4\newinventory.php

 class Apptha_Reservation_Model_Mysql4_Newinventory extends Mage_Core_Model_Mysql4_Abstract{

protected function _construct(){
$this->_init('reservation/newinventory', 'id');
}

}

所以我没有从 Magento 收到任何错误。看起来 Magento 找到了所有路径(模型、资源等),但无论如何都无法保存()我的数据。

更新 3我在 Mysql.php 中插入代码以将查询记录到 public function query($sql, $bind = array())

    $code = 'SQL: ' . $sql . "\r\n";
if ($bind) {
$code .= 'BIND: ' . print_r($bind, true) . "\r\n";
}
Mage::Log("[".date('Y-m-d H:i:s')."] ".$code);

然后我进入日志文件:

2012-10-15T09:54:31+00:00 DEBUG (7): [2012-10-15 09:54:31] SQL: INSERT INTO 
`apptha_booking_hotel_newinventory` (`entity_id`, `room_type_id`, `rooms_count`, `date_from`,
`date_to`, `order_id`) VALUES (?, ?, ?, ?, ?, ?)
BIND: Array
(
[0] => 17
[1] => 7
[2] => 8
[3] => 1349913600
[4] => 1349913600
[5] => 300000040
)

我尝试在 phpmyadmin 中手动执行此查询,它工作正常。但是Magento做不到。

更新 4

好的。在调试此问题时,我在尝试测试 save() 函数的 Controller 中编写了额外的 testModel 操作。我看到了,它在那里起作用。

然后我回到原来的功能,发现当我在 if-block 之外创建 save() 时,save() 工作正常。如果我在 if block 中创建 save(),那么它就不起作用。

我在 if-block 中记录了一些字符串,并确保在 if-block 中执行。所以实际上质疑为什么 save() 在下面的 if-block 中不起作用:

    if ( $state == "complete" ){
Mage::log('here');
$newInventory = Mage::getModel('reservation/newinventory');
$newInventory->setEntityId(12);
$newInventory->setRoomTypeId(7);
$newInventory->setRoomsCount(8);
$newInventory->setDateFrom(1349913600);
$newInventory->setDateTo(1349913600);
$newInventory->setOrderId(300000040);

$query = $newInventory->save();
die;
}

但条件是

if ( $state === "processing" )

然后它工作正常。当订单状态改变时,这段代码在观察者函数中。当管理员为产品开具“发票”时,生产状态从“处理中”变为“完成”。因此 Magento 进入函数两次。第一次在“处理”时 save() 工作正常但在“完成”时它不起作用。

最佳答案

所以问题出在一些内部 Magento 处理中。我花了1天时间来理解它。

但现在停止并通过使用另一个观察者事件 sales_order_save_commit_after 解决它,我检查订单状态已完成并使用 save() 函数。可以肯定的是,它工作正常。

关于Magento 模型-> 保存 () 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12889433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com