2015-06-14 192 views
0

我只是在我的模型中有該代碼,因此,我得到了未定義的偏移量:0 我應該怎麼做才能解決這個問題?我試過申報新的變量,但仍然沒有改變。 謝謝未定義的偏移量:0 yii2

public function sendSMS() { 
    $model2 = SibuStudent::find()->innerJoin('Sibu_Payment', 'Sibu_Payment.virtual_id=Sibu_Student.virtual_id')->where('Sibu_Student.phone1 != "NULL" ' ) ->all(); 
    $model3 = SibuStudent::find()->innerJoin('Sibu_Payment', 'Sibu_Payment.virtual_id=Sibu_Student.virtual_id')->where('Sibu_Student.student_name != "NULL" ' ) ->all(); 
    $model4 = SibuPayment::find()->where('Sibu_Payment.total_payment != "NULL" ' )->all(); 
    $model5 = SibuPayment::find()->where('Sibu_Payment.sms_status != "NULL" ')->all(); 
    $count = sizeof($model2); 

    for($a=0; $a<5; $a++){ 
     if ($model5[$a]->sms_status == 0) { 

     $no = $model2[$a]->phone1; 
     $message = 'Kepada Bapak/Ibu dari '.$model3[$a]["student_name"].',tagihan (SPP,Asrama,Kantin,Adm) Rp.'.$model4[$a]["total_payment"].' dibayarkan sesuai tagihan. SMS ini tidak untuk dibalas, jika ada yang kurang jelas diberitahukan kepada siswa dan menanyakan kepada kami. Salam'; 

     if (strlen($message) < 160) 
     { 
      $outbox = new Outbox; 
      $outbox->CreatorID = 'Gammu'; 
      $outbox->TextDecoded = $message; 
      $outbox->DestinationNumber = $no; 
      $outbox->save(); 
     } 
    //batas for 
    } 
} 
+0

*未定義偏移*意味着有你的陣列與關鍵'中沒有元素0'。嘗試'var_dump'你的'$ model'變量,看起來至少有一個是空的 – Tony

+0

也正如我看到你比較'NULL'這是一個字符串,而不是'NULL',所以你的where子句應該是例如'Sibu_Payment.sms_status IS NOT NULL' – Tony

回答

2

你必須嘗試這種方式來找到模型的數據爲NOT NULL條款。爲所有檢查不爲空的模型執行此操作。因爲你的模型具有關鍵0沒有元素在這種情況下,爲什麼它返回Undefined offset 0

SibuPayment::find()->where(['not', ['Sibu_Payment.total_payment' => null]])->all(); 

For example ['not', ['attribute' => null]] will result in the condition NOT (attribute IS NULL)

檢查更多:http://www.yiiframework.com/doc-2.0/yii-db-query.html#where()-detail

+0

謝謝,它適用於我。 –

+0

@Erjan Sarwono Sirait,很高興它適合你,祝你好運。順便說一句,你可以接受答案。 –

+0

更改爲該代碼後,我仍然有一些錯誤:未定義偏移量:0再次,我不知道要更改-_- $ model4 = SibuPayment :: find() - >其中(['不',[ 'Sibu_Payment.total_payment'=> null]]) - > all(); $ model5 = SibuPayment :: find() - > where(['not',['Sibu_Payment.sms_status'=> null]]) - > all(); –