Activerecord yii2活动记录插入空行
用yii2活动记录进行一些测试。 它不想在表中插入数据。它只需插入null's 请给我一些建议 表: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)
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);