代码之家  ›  专栏  ›  技术社区  ›  Dkna

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

  •  2
  • Dkna  · 技术社区  · 7 年前

    如果我的additional\u 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, url('/user/showupdate6/'.$id->id.'/edit6')

    2 回复  |  直到 7 年前
        1
  •  4
  •   Maraboc    7 年前

    您永远不会得到null,这样您就可以在中进行测试 if( $additional_info) 它将被评估为真的, 因为 它将始终返回一个集合,即使没有满足条件的元素,它也将返回一个不为null的空集合。

    您有三种选择:

    • 使用 ->get() 和添加 ->count() 在if状态中 if($additional_info->count())

    • 代替 -&燃气轮机;获取() 通过 ->first() 然后离开 if($additional_info)

    • 代替 -&燃气轮机;获取() 通过 -&燃气轮机;计数() if($additional_info > 0)

    尝试使用 whereNull orWhereNull 这样地:

    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');
    }
    
        2
  •  0
  •   Lloople    7 年前

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

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