避免使用Laravel查询返回“ Undefined offset 0”表为空

目前,我有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()的代码正常工作。最好的方法是什么?

quanlong123456 回答:避免使用Laravel查询返回“ Undefined offset 0”表为空

因为您正在与表格数据的整数进行比较。

将条件更改为类似的内容。

 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()
,

我认为您缺少->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;
本文链接:https://www.f2er.com/3154640.html

大家都在问