我有带有字段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)尝试(仅用于调试)

10-05 19:19