我有一个简单的表格如下:
class SnookerCurrentInfo extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('current_frame_id', 'integer', 4, array('notnull' => 'false'));
$this->hasColumn('current_player_id', 'integer', 4, array('notnull' => 'false'));
$this->hasColumn('current_score1', 'integer', 4, array('notnull' => 'false'));
$this->hasColumn('current_score2', 'integer', 4, array('notnull' => 'false'));
}
public function setUp()
{
$this->setTableName('snooker_current_info');
}
}
我想在此表中只保留一个条目。因此,每次更改值时,我都会读取id = 1 out的条目并更改对象并执行save。如下:
$info = Doctrine::getTable('SnookerCurrentInfo')->find(1);
$info->current_frame_id = $jsonInfo['current_frame_id'];
$info->current_player_id = $jsonInfo['current_player_id'];
$info->current_score1 = $jsonInfo['current_score1'];
$info->current_score2 = $jsonInfo['current_score2'];
$info->save();
但奇怪的是,我试着说清楚。让我们首先说,条目是(30,1,1,0),我切换播放器,所以将条目更新为(30,2,1,0)。然后我再次切换播放器,所以条目应该更新为(30,1,1,0),但这不会影响数据库!!在数据库中,条目仍然为(30,2,1,0)!!!!
但是如果在(30,2,1,0)之后,我将分数更新为(30,2,1,1),然后将玩家切换回(30,1,1,1)然后就可以了。
那是什么?我应该如何处理它?</ p>答案 0 :(得分:1)
我意识到这个问题已经很老了,但也许这会帮助其他人。
在检查脏字段时,Doctrine 1.x(可能也是2.x)似乎在布尔值方面存在一些问题。自从我使用1.x以来已经有一段时间了,但是尝试将值从(int)1更新为0将无法正常工作,它无法识别更改(关于true / false的内容是我的猜测)。
我最终做的是在持久化更改之前用(字符串)0替换每个(int)0。
答案 1 :(得分:0)