Избегайте возврата пустой таблицы «Неопределенное смещение 0» с помощью Laravel Query - PullRequest
0 голосов
/ 06 ноября 2019

В настоящее время у меня tbl_projtask из MySQL

, и у меня есть этот запрос в моем приложении laravel. Это прекрасно работает, если tbl_projtask имеет строки.

$projtask = DB::connection('mysql')->select("SELECT * from tbl_projtask WHERE projCode = '".$request->projCode."' AND taskCode = '".$request->taskCode."' AND deleted = 0")

Но когда я усекаю таблицу.

Этот запрос возвращает мне ошибку, подобную этой

"message": "Undefined offset: 0",

Я использую count() для проверки, если внутри таблицы есть данные.

что-то вроде этого

if(count($projtask)){
     //Some codes
}else{
     //Some codes
}

Если я усекаю таблицу. Код дает мне ошибку, указанную выше. Но если не усечено и имеет несколько строк. Код count() - это штрафы. Каков наилучший подход для этого?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Я думаю, что вы пропустили ->get() или ->first(), если вы выберете get(), это даст вам ожидаемый возврат заполненной или пустой коллекции, то есть:

$projtask = DB::connection('mysql')->select("SELECT * from tbl_projtask WHERE projCode = '".$request->projCode."' AND taskCode = '".$request->taskCode."' AND deleted = 0")->get()

, сделав такТеперь вы можете проверить, является ли он пустым или нет, то есть:

if(empty($projtask) === true){
  // Handle logic if the collection is empty here
}

// else return the $projtask
return $projtask;
0 голосов
/ 06 ноября 2019

Поскольку вы сравниваете с целым числом данных таблицы.

Измените условие на что-то вроде этого.

 if(count($projtask) > 0){
         //Some codes
    }else{
         //Some codes
    }

Также вы можете использовать построитель запросов.

    $projtask = DB::table('tbl_projtask')
    ->select("*")
    ->where(['projCode' => $request->projCode, 'taskCode'=> $request->taskCode, 'deleted' => 0 ])
    ->get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...