我有一个问题。让我们说我们有一个像这样的模型:
/**
* This is the model class for table "user".
*
* @property integer $id
* @property string $username
* @property string $first_name
* @property string $last_name
*/
class User extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'user';
}
public function rules()
{
return [
// some rules for fields
];
}
public function attributeLabels()
{
return [
// some attributes
];
}
现在我想为仅更新(例如)first_name创建其他表单模型。所以我创建了下一个表单模型:
class UpdateUserFirstNameForm extends Model
{
public $first_name
public function rules()
{
return [
// some rules for first_name
];
}
问题是 - 我如何保存这张表格?我必须在控制器中写什么?
答案 0 :(得分:0)
为什么你想要创建另一个模型UpdateUserFirstNameForm,你可以在你的控制器内做任何事情。更新,保存或删除。和
class UpdateUserFirstNameForm extends Model
仅用于验证,无法访问db
答案 1 :(得分:0)
我会在UpdateUserFirstNameForm
为用户id
创建另一个属性,让我们说id_user
。然后,在表单中创建一个带有用户ID的activeHiddenField
(以及用户名字的文本输入)。
现在在控制器中,您将帖子内容加载到模型中,按ID查找用户并使用新名字更新User
模型:
$model = new UpdateUserFirstNameForm();
if ($model->load(Yii::$app->request()->post() and $model->validate()) {
$user = User::findOne($model->id_user);
if ($user == null)
throw new NotFoundHttpException();
$user->first_name = $model->first_name;
$user->save();
}