Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php exists方法在用于检查行存在性的laravel中无法按预期工作_Php_Laravel - Fatal编程技术网

Php exists方法在用于检查行存在性的laravel中无法按预期工作

Php exists方法在用于检查行存在性的laravel中无法按预期工作,php,laravel,Php,Laravel,我正在开发一个小的RESTAPI,在我的控制器中,只有当$object->exists()返回1时,json响应才会工作,但在其他情况下,它会发送错误 这是我的密码: public function show($id) { $category=Category::find($id); return response()->json( ($category->exists()?$category:["message"=>

我正在开发一个小的RESTAPI,在我的控制器中,只有当
$object->exists()
返回
1
时,
json
响应才会工作,但在其他情况下,它会发送错误 这是我的密码:

 public function show($id)
    {
        $category=Category::find($id);
        return response()->json(
          ($category->exists()?$category:["message"=>"not found"])
        );
    }
当找到该类别时,我将以
json格式返回该行
,对于
false
情况不起作用。 我首先要做的是,在出现
错误的情况下
返回消息并编码
404代码状态
,如下所示:

public function show($id)
    {
        $category=Category::find($id);
        return response()->json(
          ($category->exists()?$category:(["message"=>"not found"],404))
        );
    } 
但是,当我的代码似乎写得很好时,也没有任何效果,而且我在destroy方法中遇到了完全相同的问题:

 public function destroy($id)
    {
      $category=Category::find($id);
      if($category->exists()){
        $category->delete();
        return response()->json(array("message"="category deleted","success"=>true));
      }
        return response()->json(array("message"=>"Not found"),404);
    }
使用
Category::find($id)将返回一个
类别
对象。但是,如果记录不存在,它将返回
null
。因此,您试图调用
null
上的函数
exists()
,这是不可能的

最好检查变量是否具有值
null
,如果您使用的是php7,则使用a

$category = Category::find($id);
return response()->json(
    $category ?? ["message" => "not found"], 
    404
);
使用
Category::find($id)将返回一个
类别
对象。但是,如果记录不存在,它将返回
null
。因此,您试图调用
null
上的函数
exists()
,这是不可能的

最好检查变量是否具有值
null
,如果您使用的是php7,则使用a

$category = Category::find($id);
return response()->json(
    $category ?? ["message" => "not found"], 
    404
);
exists()
是一个生成器方法,您正在模型实例上执行它

因为您已经从数据库中获取了模型实例,所以您可以检查它是否为空。您可以执行以下操作:

empty($category) ? ["message"=>"not found"] : $category
exists()
是一个生成器方法,您正在模型实例上执行它

因为您已经从数据库中获取了模型实例,所以您可以检查它是否为空。您可以执行以下操作:

empty($category) ? ["message"=>"not found"] : $category
我首先要做的是,在出现错误的情况下返回 消息和代码404代码状态类似于以下代码

findOrFail()
方法正好适用于这种情况:

公共功能显示($id)
{
$category=category::findOrFail($id);
返回$category;
}
如果没有找到模型,
findOrFail()
将抛出ModelNotFoundException,导致返回404

我首先要做的是,在出现错误的情况下返回 消息和代码404代码状态类似于以下代码

findOrFail()
方法正好适用于这种情况:

公共功能显示($id)
{
$category=category::findOrFail($id);
返回$category;
}

如果找不到模型,
findOrFail()
将抛出ModelNotFoundException,导致返回404。

Laravel有现成的方法
findOrFail
,那么为什么您要如此努力地实现它呢