我有带有字段query
的表id
,该字段是自动增量主键。
模型
class Query extends \yii\db\ActiveRecord
{
public static function tableName()
{
return '{{%query}}';
}
public function rules()
{
return [
[['id', 'created_at'], 'integer'],
[['data'], 'string'],
];
}
}
应用
$q = new Query();
$q->created_at = time();
$q->data = Json::encode($query);
if ($q->save())
echo $q->id == null ? "null" : $q->id;
else
echo "Validation error";
结果为
null
,尽管数据库中确实发生了ID递增的新记录。另外,我在数据库日志中仅看到
insert
记录,但是没有获得插入行ID的记录。怎么了?
最佳答案
如您在vendor / yiisoft / yii2 / db / ActiveRecord.php中看到的
已经有一个primaryKey方法
public static function primaryKey()
{
return static::getTableSchema()->primaryKey;
}
返回tableSchema的适当primaryKey
所以你不应该重新定义这个方法..
该方法专门称为primaryKey()而不是getPrimaryKey()..最后一个是魔术获取器..并返回var $ primaryKey。的值。
如果未执行插入操作,可能是您遇到了一些验证问题..使用
save(false)
尝试(仅用于调试)