フィールドid
がオートインクリメントの主キーのテーブルquery
を持っています。インクリメントidを持つ新しいレコードがデータベースに発生したもののsave()の後にautoincrement属性が常にnullです
モデル
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
です。
また、dbログにはinsert
レコードしかありませんが、挿入された行IDを取得するレコードはありません。
どういうところが間違っていますか?
を使用して(ちょうどデバッグのため)してみてください..あなたは、いくつかの検証の問題がある可能性があり..変数$ PRIMARYKEYため
を値を返します方法? – Bizley
なぜ、あなたはprimaryKey()メソッドを再定義しましたか?.. ActiveRecordは既にこのメソッドを持っています – scaisEdge
'primaryKey()'を削除しました。暗黙の 'primaryKey()'を呼び出すと** ['id'] **が返され、 'getPrimaryKey()'は** null **を返します。 – Alexey