图1:这是一个示例模型类
class Games {
public $id = 0;
public $date = null;
public $player1_id = 0;
public $player2_id = 0;
public $score = null;
public function save(){
if(empty($this->id)){
// do INSERT here
}
else{
// do UPDATE here
}
}
}
图2:这是该类的示例使用
// Save a new date to an existing game
$game = new Games;
$game->id = $input['id'];
$game->date = $input['date'];
$game->save();
如果UPDATE
基于figure2player1_id
执行查询,则player2_id
、 和的值score
将被错误地覆盖为零/空值。因此,我需要一种方法从类内部确定某些属性不是通过调用figure2设置的,因此我可以动态更改UPDATE
查询以仅更新数据库中的特定字段。还是我接近这个错误?
注意:我知道我可以使用单个array
属性来保存所有字段(并使用isset
),但这感觉就像它打破了模型的要点并且也是非常特定于 PHP 的(因为该解决方案不能很好地转移到其他像JAVA这样的语言,其中数组是严格类型的?)。我也意识到我可以做我认为 ORM 做的事情并SELECT
在执行更新之前进行初始查询(但这似乎非常低效!)