Php YII活动记录未插入数据库,但未给出错误

Php YII活动记录未插入数据库,但未给出错误,php,mysql,yii,Php,Mysql,Yii,我已经有一段时间失去理智了。我不使用Yii,我只是继承了一些遗留的代码,我正试着去理解它。 我正在使用活动记录将记录添加到数据库中 代码如下: $result = new Result(); $result->setIsNewRecord(true); $result->SourceId = Sources::CIP; $result->PartnerId = $partner->Id; $result->Result = '

我已经有一段时间失去理智了。我不使用Yii,我只是继承了一些遗留的代码,我正试着去理解它。 我正在使用活动记录将记录添加到数据库中

代码如下:

    $result = new Result();
    $result->setIsNewRecord(true);
    $result->SourceId = Sources::CIP;
    $result->PartnerId = $partner->Id;
    $result->Result = '<h1>'.$partner->Name.'</h1>'.$raport;
    $result->ResultTypeId = empty($nasoale)?9:8;
    $result->Enabled = 1;
    $result->Date = date('Y-m-d H:i:s');
    $result->CreationUserId = Yii::app()->params['sistemUser'];
    $result->LastUpdateUserId = Yii::app()->params['sistemUser'];
    $result->save();
$result=新结果();
$result->setIsNewRecord(true);
$result->SourceId=Sources::CIP;
$result->PartnerId=$partner->Id;
$result->result='.$partner->Name'.$raport;
$result->ResultTypeId=empty($nasoale)?9:8;
$result->Enabled=1;
$result->Date=Date('Y-m-dh:i:s');
$result->CreationUserId=Yii::app()->params['sistemUser'];
$result->LastUpdateUserId=Yii::app()->params['sistemUser'];
$result->save();
这不会给出一个错误。它甚至有一个“插入”查询的Id。问题是,它不在数据库中。在插入这个之后,我有了另一个基于“PartnerId”和“SourceId”搜索的函数,它实际上找到了记录。我不知道怎么做,但我知道

我以同样的方式在同一个表中向数据库中插入其他内容,我以前没有遇到过这个问题


在此方面的任何帮助都将不胜感激。

请在保存模型之前进行检查。它必须返回true。

通常您需要执行其中一些步骤

if ($model->save()) { // do someting }
else { // do something other. u will find erros list here $model->errors;
或者类似的事情

if ($model->validate()) { $model->save(false); }
else { // do something other }
区别在于默认情况下,$model->save()首先进行验证,如果验证通过,则进行保存。但在某些情况下,您希望首先进行验证,然后在一切正常的情况下进行保存,这样您就可以传递false来保存以逃避验证

在您的情况下,因为您没有CDBEException,所以它与保存在数据库中无关,它通常与您的模型规则有关。所以我认为最好根据模型规则检查模型属性,或者更好地根据数据库检查模型规则,看看是否一切正常。如果save()返回false,还可以在页面上打印$model->errors


我希望这会有所帮助。

听起来你有多个问题源于同一个问题

插入,数据库中缺少,无错误 这很可能是因为事务已启动,但发生了
回滚
(或未发出
提交

如果表中有一个
自动增量
字段,并且缺少行,则可以在某种程度上确认这一点。 这是因为不允许重用自动增量值,这意味着如果回滚或不提交,则会“丢失”该值

插入,数据库中缺少,下一个查询将查找数据 这很可能是由于工作方式的原因

如果辅助函数在同一线程中运行,并且是同一事务的一部分,它将读取数据

如果辅助函数未在同一线程中运行,但隔离级别允许脏读,它将读取数据


如果您需要更多帮助,请在评论中大声呼喊。

您可以
打印错误($result->errors)
查看是否有错误,同时保存错误。我已经尝试过了。我的模型中没有beforeSave()方法。也在寻找。$result->save()返回什么?它返回bool(true)您是对的。代码中的某个地方发生了回滚。仍然没有找到它,但是使用
Yii::app()->db->getCurrentTransaction()->commit()快速、肮脏地修复了它保存完成作业后。读得好。谢谢。欢迎您的帮助,欢迎来到SO:)