2017-09-20 5 views
0

Je veux mettre à jour une seule colonne de la table que je reçois cette erreur lors de la mise à jour d'une des lignes de table:activerecord ne peut pas mettre à jour une ligne

Call to a member function load() on null 

Ceci est mon action:

public function actionAddNote(){ 

     $id = \Yii::$app->request->post('id'); 

     $model = MainRequest::findOne($id); 

     if ($model->load(\Yii::$app->request->post()) && $model->validate()) 
     { 
      if($model->update()){ 
       echo "1"; 
      }else { 
       print_r($model->getErrors()); 
      } 
     } 

     return $this->renderAjax('add-extra-note',['model' => $model]); 
    } 

Mon modèle:

class MainRequest extends ActiveRecord { 

    public static function tableName() 
    { 
     return "main_request"; 
    } 


    public function behaviors() 
    { 
     return [ 
      DevNotificationBehavior::className(), 
     ]; 
    } 

    public function rules() { 

     return [ 
      [ 
       ['who_req', 
       'req_description', 
       'req_date', 
       'extra_note' 

      ], 'safe'] 
     ]; 

    } 

formulaire fera correctement et je peux voir mon texte, mais lorsque je soumets cette erreur se produire:

<div> 

    <?php $form = ActiveForm::begin(); ?> 

<?= $form->field($model, 'extra_note')->textInput(); ?> 
<div class="form-group"> 
    <?= Html::submitButton('save', ['class' => 'btn green']) ?> 
</div> 

<?php ActiveForm::end(); ?> 

</div> 

Quelqu'un peut-il dire ce qui est le problème? Je vous remercie.

+0

En actionAddNote, Êtes-vous sûr que le paramètre $ id n'est pas nul? –

+0

oui parce que je peux voir '$ model = MainRequest :: findOne ($ id)' valeur sur mon formulaire qui est prêt pour l'édition – moh

Répondre

0

Vous devez charger le modèle et l'utilisation du modèle chargé d'accès à l'attribut et vous devez gérer yLa situation initiale où vous avez d0n't un modèle de mise à jour, mais besoin d'un modèle pour invoquer la mise à jour render forme, par exemple:

public function actionAddNote(){ 

     $myModel = \Yii::$app->request->post(); 

     $model = MainRequest::findOne($myModel->id); 

     if (isset($model)){ 
     if ($model->load(\Yii::$app->request->post()) && $model->validate()) 
     { 
      if($model->update()){ 
       echo "1"; 
      }else { 
       print_r($model->getErrors()); 
      } 
     } 

     } else { 
     $model = new MainRequest(); 
     } 

     return $this->renderAjax('add-extra-note',['model' => $model]); 
    } 
0

utilisation simple fonction de sauvegarde ou de updateAttributes Yii2:

fonction publique actionAddNote() {

$id = \Yii::$app->request->post('id'); 

    $model = MainRequest::findOne($id); 

    if ($model->load(\Yii::$app->request->post()) && $model->validate()) 
    { 
     if($model->**save**()){ 
      echo "1"; 
     }else { 
      print_r($model->getErrors()); 
     } 
    } 

    return $this->renderAjax('add-extra-note',['model' => $model]); 
}