如何在Laravel中返回0而不是null

时间:2017-04-17 07:40:29

标签: php laravel

我的代码中存在很大问题。如果想要的行返回null(这意味着没有数据符合搜索条件),我试图返回0

我的查询是:

$total7 = DB::table('agencies')
->join('users' , 'users.id' , '=' , 'agencies.user_id')
->join('user_addresses' , 'user_addresses.user_id' , '=' , 'users.id')
->join('cities' , 'cities.id' , '=' , 'user_addresses.city_id')
->join('country_states', 'country_states.id' , '=' , 'cities.state_id')
->select('agencies.id as agenID ','country_states.name as sName', DB::raw('count(agencies.id) as agencount') , 'agencies.created_at as agencreate' )
->where ('country_states.name','=','Capital Governorate')
->whereNULL ('agencies.id')
->whereBetween('agencies.created_at' , ['2017-01-01' , '2017-03-31'] )
->groupBy(DB::raw("MONTH(agencies.created_at)") , 'country_states.name')
->get(); 

此语句应返回0,0,2但现在它不返回任何内容。 我希望它搜索抛出指定的月份范围(3个月)并返回值(如果存在)或0(如果没有值)。 我试过IFNULL但没有尝试。 有什么帮助吗?

5 个答案:

答案 0 :(得分:0)

尝试检查集合的计数:$total7->count(); `

答案 1 :(得分:0)

你可以从查询中做到:

使用IFNULL:

IFNULL(fieldname,0)

答案 2 :(得分:0)

    if(!$total7) {
      $result = 0;
     }

然后在您的控制器或刀片文件中使用$result变量

答案 3 :(得分:0)

您可以使用php函数count:

 count($total7)

当有空集合时,它会给你0 检查第一个例子: http://php.net/manual/es/function.count.php

答案 4 :(得分:0)

答案更新:

我用术语更改了查询以返回我只需要的内容

count(agencies.id)

所以查询输出的代码是:

 $countt = 3;
$ii = 1;
do{

                  $total7 = DB::table('agencies')
->join('users' , 'users.id' , '=' , 'agencies.user_id')
->join('user_addresses' , 'user_addresses.user_id' , '=' , 'users.id')
->join('cities' , 'cities.id' , '=' , 'user_addresses.city_id')
->join('country_states', 'country_states.id' , '=' , 'cities.state_id')
->select( DB::raw('ifnull(count(agencies.id),0) as agencount'))
->where ('country_states.name','=', $gover)
->whereMonth('agencies.created_at' ,  $ii)
->groupBy(DB::raw("MONTH(agencies.created_at)") , 'country_states.name')
->first();
if ( count($total7) == 0 ){
    echo '0,';
}else{
  echo $total7->agencount.',';
}


$ii++;

}while ($ii <= $countt);

$gover是来自另一个更大的foreach循环的值,循环抛出我所拥有的所有省份。 $ii是一个计数器作为月份计数器搜索投掷所需的月份范围。进行查询搜索,直到达到所需月份的限制(从1到3为3个月)。 如果当前月份没有值,则返回值为0,如果为零,则以其他方式打印,给出返回值。

我感谢所有评论过这个问题的人。我对你有利。