在 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 枢轴连接以获取具有主要 MySQL 结果的枢轴值
Uncaught ReferenceError: $ is not defined - Laravel 5.5 + Laravel Mix