当另一个表层中的值为null时,重定向到页面

时间:2017-12-19 09:14:39

标签: php laravel redirect

如果我的additional_infos表包含一些在这种情况下为空的东西,联系人,姓名和地址,我正试图将用户重定向到另一个页面。

我现在做了类似的事情:

但即使填写了联系人,姓名和地址,它仍会将我重定向到另一页。有人能帮我吗?提前致谢

public function test(Request $request){
    $additional_info = DB::table('additional_infos') ->where('address',NULL)->orWhere('name', NULL)->orWhere('number')->get();
    //request input //ignore this part
    if( $additional_info) {
        return redirect(url('/user/showupdate6/'.$id->id.'/edit6') );
    } else {
        return redirect('/home');
    }
}

如果我的数据名称,联系人和地址已填写,我希望它将我重定向到主页。如果我的数据名称,联系人和地址为空,我希望它将我重定向到此网址,url('/user/showupdate6/'.$id->id.'/edit6')

2 个答案:

答案 0 :(得分:4)

你将永远不会得到null,以便你可以测试它,如果这样if( $additional_info)它将alawys评估为true,因为它将始终返回一个集合,即使没有元素在满足条件的情况下,它将返回一个空集合而不是null。

您有三种选择:

  • 使用->get()并在if statment ->count()

  • 中添加if($additional_info->count())
  • ->get()改为->first()并离开if($additional_info)

  • ->get()替换为->count()if($additional_info > 0)

使用whereNullorWhereNull这样尝试:

public function test(Request $request){
    $additional_info = DB::table('additional_infos') 
                            ->whereNull('address')
                            ->orWhereNull('name')
                            ->orWhereNull('number')
                            ->get();
    //request input //ignore this part
    if( $additional_info->count())
        return redirect(url('/user/showupdate6/'.$id->id.'/edit6') );
    else{
    return redirect('/home');
}

答案 1 :(得分:0)

尝试将您的查询转换为SQL,以检查您首先使用数据库做什么

$additional_info = DB::table('additional_infos')->where('address',NULL)->orWhere('name', NULL)->orWhere('number')->toSql();
dd($additional_info);