1
「sum」と「name」という2つのパラメータしかない単純なモデルがあります。私はこのモデルのクラスの新しいオブジェクトを作成し、それをビューに送りました。私は2つのフィールド、つまり「合計」と「名前」を持っています。 フィールドに値を入力すると(fe sum = 10、name = Joe)、現在の合計が10ずつ減少することが期待されますが、ユーザーJoeの値は10ずつ増加します(データベースには3つの列もあります。 'sum'と 'name')。 しかし、私はフィールドからこの名前をdbに更新することはできません。アクティブなレコードフィールドを使用してクラスのオブジェクトを作成する方法は?
//Controller
public function actionSum()
{
$model = new SumForm();
if ($model->load(Yii::$app->request->post())) {
if ($user = $model->sumfunction()) {
} return $this->goHome();
}
return $this->render('sum', [
'model' => $model,
]);
}
//Model
class SumForm extends Model
{
public $sum;
public $name;
public function attributeLabels()
{
return [
'sum' => 'Sum',
'name' => 'Name',
];
}
public function sumfunction()
{
if ($this->validate()) {
$desc = User::findOne(Yii::$app->user->getId());
$desc->sum -= $this->sum;
$desc->save();
$inc = User::findOne(['name'=>Yii::$app->request->post('name')]);
//here I need to take a row for user which name I input
$inc->sum += $this->sum;
$inc->save();
}
}
//in view 'sum' only two fields and button
はご回答いただきありがとうございます!しかし、この場合はdbの更新はありません。 – Jens
申し訳ありませんが、答えを更新しました... – onmotion
助けてくれたonmotionに感謝します。すべてが大丈夫だった。 post( 'username')の代わりに必要な投稿($ this-> username)のみ。 – Jens