database - Magent 2:记录没有保存到数据库中
问题描述
我有一个疯狂的问题,我在数据库中的记录没有得到保存。
- 我制作了一个客户模块。哪个有模型 - 在从管理面板保存货件之前,我在观察者事件中使用它
订单参数.php
<?php
namespace Vendor\Module\Model;
use Magento\Cron\Exception;
use Magento\Framework\Model\AbstractModel;
class RequestParams extends AbstractModel
{
/**
* @var \Magento\Framework\Stdlib\DateTime
*/
protected $_dateTime;
/**
* @return void
*/
protected function _construct()
{
$this->_init(\Vendor\Module\Model\ResourceModel\OrderParams::class);
}
}
资源模式/OrderParams.php
<?php
namespace Vendor\Module\Model\ResourceModel;
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
class OrderParams extends AbstractDb
{
/**
* Initialize resource
*
* @return void
*/
public function _construct()
{
$this->_init('orders_params', 'id');
}
}
所以如果我使用模型来保存记录
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $reqParams=$objectManager->create('Vendor\Module\Model\OrderParams');
try { /*$reqParams->setData([ 'order_id' => 1, 'company_id' => 1 ]);*/ $reqParams->setOrderId(1); $reqParams->setCompanyId(1); $reqParams->save(); } catch (\Magento\Framework\Exception\LocalizedException $e) { $aa=$e->getMessage(); }
所以如果你看到上面我已经尝试了两种方法。我也尝试过使用或不使用对象管理器。仍然没有运气。它甚至没有说出了什么问题。它返回结果为 TRUE。
所以我决定用直接的sql查询来做
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
$connection = $resource->getConnection();
$insertData[] = ['order_id' => 14, 'company_id' => 1];
$insertData[] = ['order_id' => 14, 'company_id' => 2];
try {
$connection->beginTransaction();
$connection->insertMultiple('orders_params', $insertData);
$connection->commit();
} catch(\Exception $e) {
$connection->rollBack();
}
我用 insertMultiple() 和直接 SQL 字符串查询和 insertArray().. 都失败了,都有共同的问题,他们说它成功完成但是当我去 DB 表时它是空的。
令人惊讶的是,当我使用 XDEBUGGER 从 $VARIABLE 复制生成的查询并直接在 sql server 中运行它时。它成功插入。
如果我在查询中未能通过任何完整性约束,还有一件更令人惊讶的事情。它说查询有问题,mysql不会插入它。
然后我在其他基本上是 CARRIER 模型的课程中尝试了这个。它在那里工作而无需对代码进行任何更改。只需将其复制并粘贴到那里即可。
但在我的模型中它什么都不做。
然后我在数据库中注意到,如果我手动输入一条记录,它有不同的自动增量 id。所以基本上我每次尝试插入记录时都发现了什么。它在表中插入。但不知何故它会被自动删除..
为了确认,我在 phpmyadmin 中打开了 QUERY LOGGER,我发现我的查询在那里插入。但是我没有找到任何删除查询..但是在插入后它仍然消失了。
那么任何人都可以帮我解决这个问题吗?
解决方案
推荐阅读
- javascript - Postgres:从数组中获取 json 对象
- c++ - 转发参考的参数类型检查不起作用
- c++ - 编写一个不使用任何分号的函数
- oracle - Oracle SQL:返回没有重复的集合
- java - 将 Json 文件反序列化为包含以对象为键的映射的 java 对象
- petri-net - Petri 网建模
- css - SVG 圆环图中段之间的间隙
- jquery - 我如何确定每个表的最高数字是多少
- javascript - 如何使用 XMLHttpRequest 在另一个 HTML 文件中显示 html 文件?
- javascript - 无法使用从 chlid 组件到父组件的数据?