2015-06-14 2 views
0

У меня только этот код в моей модели, и в результате я получил Undefined offset: 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

* Undefined смещение * означает, что нет ни одного элемента в массиве с ключом ' 0'. Попробуйте 'var_dump' ваши переменные' $ model', похоже, что хотя бы один из них пуст – Tony

+0

Также, как я вижу, вы сравниваете с '' NULL'', который является строкой, а не 'NULL', поэтому ваши предложения where должны быть например 'Sibu_Payment.sms_status IS NOT NULL' – Tony

ответ

2

Вы должны попробовать этот способ найти данные MODELS для 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() -> где (['not', [ 'Sibu_Payment.total_payment' => null]]) -> all(); $ model5 = SibuPayment :: find() -> где (['не', ['Sibu_Payment.sms_status' => null]]) -> all(); –

Смежные вопросы