在 laravel 5.5 中检查查询没有结果

Posted

技术标签:

【中文标题】在 laravel 5.5 中检查查询没有结果【英文标题】:check query no result in laravel 5.5 【发布时间】:2018-02-02 09:20:58 【问题描述】:

我想找到一种方法来检查我的查询结果是否没有返回值。例子: 如果在我的 tableExample 数据库中没有我要传递的 id,则该方法应该返回一个异常或一个简单的回显,表明我不存在于表中

我的代码如下:

try
     DB::table('tableExample')
        ->where('id', "2")
        ->update(['update' => "1"]);

        return $result= array("result" => "true" );
      catch(QueryException $e)
        return $result= array("result" => "false" );
        echo " - ".$e;
      

【问题讨论】:

请详细说明你的问题,我没明白你的问题 什么是 turn 应该是 return$id 来自哪里? 【参考方案1】:

update方法返回整数值(affected rows)如果成功,试试这样

try
    $update = DB::table('tableExample')
        ->where('id', "2")
        ->update(['update' => "1"]);
    if($update)
        $result = array("result" => true );
    else
        $result = array("result" => false,"message"=>"Not Found" );
    
catch(QueryException $e)
    $result = array("result" => false,"message"=>$e->getMessage() );

return $result;

【讨论】:

否则它在那里太多余了:\ 不行,$result 的值会相应改变【参考方案2】:

使用findOrFail() 辅助方法。这样您就不需要将操作包装在 try catch 中,因为如果 findOrFail 没有找到该行,那么它将引发异常。

    $resultData = DB::table('tableExample')->findOrFail(2);

    $update = $resultData->update(['update' => "1"]);

    if(!$update)
      return response(['results'=>false]);
    

    return response(['results'=> true]); 


update() 方法返回一个布尔值 true,表示更新成功,反之亦然。

【讨论】:

您删除了try...catch 部分,update() 返回整数值而不是布尔值:check this @btl 如果由于某种原因更新失败,则反馈其支持者,因此其正确放置在那里:) 或者你可以用一行替换它...return response(['results'=> !!$update]);. @user2486 是的,我确切地知道update() 返回什么以及它将如何作用。因此,如果它以整数形式返回,则 if 语句将正常工作:) 所以你的评论是不必要的!【参考方案3】:

您可以使用whereExists 子句来做到这一点:

https://laravel.com/docs/5.5/queries#where-exists-clauses

https://laravel.com/api/5.5/Illuminate/Database/Query/Builder.html#method_exists

【讨论】:

这不是答案。 为什么?因为我没有包含一个完全实施的解决方案? 是的@LeoinstanceofKelmendi 是对的,请用代码回答,是的已实施的解决方案。

以上是关于在 laravel 5.5 中检查查询没有结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 5.5 中运行 phpunit

Laravel 5.5 枢轴连接以获取具有主要 MySQL 结果的枢轴值

检查 Laravel 5.5 中是不是存在记录 [关闭]

Uncaught ReferenceError: $ is not defined - Laravel 5.5 + Laravel Mix

Laravel 会话立即过期(Laravel 5.5)

laravel 5.5 内置鉴权特征库查询位置