首页 > 解决方案 > 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');
    }


}

所以如果你看到上面我已经尝试了两种方法。我也尝试过使用或不使用对象管理器。仍然没有运气。它甚至没有说出了什么问题。它返回结果为 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,我发现我的查询在那里插入。但是我没有找到任何删除查询..但是在插入后它仍然消失了。

那么任何人都可以帮我解决这个问题吗?

标签: databasemagento2

解决方案


推荐阅读