Activerecord yii2活动记录插入空行

Activerecord yii2活动记录插入空行,activerecord,yii2,Activerecord,Yii2,用yii2活动记录进行一些测试。 它不想在表中插入数据。它只需插入null's 请给我一些建议 表: CREATE TABLE projects ( p_id int(11) NOT NULL AUTO_INCREMENT, p_name varchar(50) DEFAULT NULL, p_create_date datetime DEFAULT NULL, p_last_update datetime DEFAULT NULL, p_active tinyint(4)

用yii2活动记录进行一些测试。 它不想在表中插入数据。它只需插入null's 请给我一些建议

表:

CREATE TABLE projects (
  p_id int(11) NOT NULL AUTO_INCREMENT,
  p_name varchar(50) DEFAULT NULL,
  p_create_date datetime DEFAULT NULL,
  p_last_update datetime DEFAULT NULL,
  p_active tinyint(4) DEFAULT NULL,
  p_comment varchar(255) DEFAULT NULL,
  PRIMARY KEY (p_id)
)
ENGINE = INNODB
CHARACTER SET utf8
COLLATE utf8_general_ci;
代码:

用法

结果

在->save()之后,项目对象看起来像

object(app\models\Projects)#78 (14) {
    ["p_id"]=>
    NULL
    ["p_name"]=>
    string(9) "asdasdasd"
    ["p_comment"]=>
    NULL
    ["p_create_date"]=>
    NULL
    ["p_last_update"]=>
    NULL
    ["p_active"]=>
    NULL
    ["_attributes":"yii\db\BaseActiveRecord":private]=>
    array(1) {
      ["p_id"]=>
      int(19)
    }
    ["_oldAttributes":"yii\db\BaseActiveRecord":private]=>
    array(1) {
      ["p_id"]=>
      int(19)
    }
    ["_related":"yii\db\BaseActiveRecord":private]=>
    array(0) {
    }
    ["_errors":"yii\base\Model":private]=>
    array(0) {
    }
    ["_validators":"yii\base\Model":private]=>
    object(ArrayObject)#80 (1) {
      ["storage":"ArrayObject":private]=>
      array(0) {
      }
    }
    ["_scenario":"yii\base\Model":private]=>
    string(7) "default"
    ["_events":"yii\base\Component":private]=>
    array(0) {
    }
    ["_behaviors":"yii\base\Component":private]=>
    array(0) {
    }
  }
您必须删除(或下面的注释)添加到模型中的公共变量

使用yii\db\ActiveRecord

class Projects extends ActiveRecord
{
   /*  public $p_id;
       public $p_name;
       public $p_comment;
       public $p_create_date;
       public $p_last_update;
       public $p_active; 
   */
  public function rules()
    {
        return [
            [['p_create_date', 'p_last_update', 'p_active'], 'safe',],
            [['codice_istat_comune_alfanum'], 'string', 'max' => 6],
            [['p_name', ], 'string', 'max' => 64],
            [['p_comment'], 'string', 'max' => 255]
        ];
    }



}
您添加的公共var将阴影/覆盖由Yi2活动记录创建的原始var,并保存在db中


您应该只为计算值向模型中添加公共var,而不为db值向模型中添加公共var检查验证错误:

$model->validate();
var_dump($model->errors);

如果您有验证错误,将不会保存模型。

显示您的操作创建相关操作控制器此帮助。愚蠢的问题。除了上课还有什么用?覆盖方法、验证等?我已经更新了答案,并对规则提出了简短的建议…但最重要的方法是使用gii生成default模型表单db。。。。
class Projects extends ActiveRecord
{
   /*  public $p_id;
       public $p_name;
       public $p_comment;
       public $p_create_date;
       public $p_last_update;
       public $p_active; 
   */
  public function rules()
    {
        return [
            [['p_create_date', 'p_last_update', 'p_active'], 'safe',],
            [['codice_istat_comune_alfanum'], 'string', 'max' => 6],
            [['p_name', ], 'string', 'max' => 64],
            [['p_comment'], 'string', 'max' => 255]
        ];
    }



}
$model->validate();
var_dump($model->errors);