save()后autoincrement属性始终为null

时间:2017-01-26 08:19:38

标签: mysql activerecord yii2

我的表格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的新记录。

此外,我在db log中只看到insert条记录,但没有记录来获取插入的行ID。

出了什么问题?

1 个答案:

答案 0 :(得分:0)

你可以在vendor / yiisoft / yii2 / db / ActiveRecord.php中看到

已有一个primaryKey方法

public static function primaryKey()
{
    return static::getTableSchema()->primaryKey;
}

返回tableSchema的正确primaryKey

所以你不应该重新定义这种方法..

该方法具体称为primaryKey()而不是getPrimaryKey()..这最后一个是魔术getter ..并返回var $ primaryKey的值..

如果没有执行插入可能会有一些验证问题..尝试(仅用于调试)使用save(false)