我有这个用户模型:
public $id;
public $username;
public $name;
public $password;
public $authKey;
public $accessToken;
和此表单模型
class SignupForm extends Model
{
public $username;
public $name;
public $email;
public $password;
public $fio;
public $phone;
并且我尝试保存:
$user = new User();
$user->username = $this->username;
$user->name = $this->name;
$user->email = $this->email;
var_dump($this->username);
var_dump($user->username);
var_dump($this->name);
var_dump($user->name);
$user->save(false);
但是在数据库表中,这仅保存电子邮件字段。 var_dump
中的所有数据均正确。
来自here:
结果是,如果您在ActiveRecord中声明公共属性,模型中,它们遮盖了AR创建的自动属性。数据已分配给您的晦涩属性,但未发送进入数据库。
您还可以使用模型的attributes()
函数来声明模型字段,并使用rules()
函数对字段进行验证。
示例:
public function attributes()
{
return [
'id',
'username',
'name',
'email',
];
}
public function rules()
{
return [
['id', 'safe'],
[['username', 'name', 'email'], 'required'],
[['username', 'name', 'email'], 'string'],
];
}
有关更多信息和示例,请查看documentation