当我试图将查询结果打印到SQLite时,我得到了这个错误,但是对于查询只有一个可能的答案。那么,为什么它返回一个数组呢?
$rGDE = DB::select('select "' . $gestiondeempresas . '" from competencias2 where nombre == "' . $username . '"');
print($rGDE);
我希望得到一个数字,而不是数组。我试着搜索一个解决方案,我发现如果我用途:
$pritnableRaw = str_replace("'", "\'", json_encode($rGDE));
print($pritnableRaw);
我得到:
[{"gestiondeempresas":"0"}]
这是我想要达到的,但我不知道如何从那里得到唯一的数字。
- 我使用的是Laravel最新版本(9.41.0)和SQlite数据库。
1条答案
按热度按时间flseospp1#
我希望我正确地理解了你的问题和意图,如果我没有理解,我向你道歉。
使用
DB::select(...args)
方法将返回一个数组,如函数文档中所示:有三个其他的选择来帮助你达到你想要的。我个人的偏好在于选择3,但它取决于你,你决定什么最能满足你的需要。
[ ]选项1
如果你想得到一条记录,你可以使用
DB::selectOne(...args)
,它只给予你一行,而不是一个行数组。然而,这仍然不是一个单一的值。你必须访问你从结果数组中选择的列。
[ ]选项2
实际上,有一个方法可以为您处理这一额外步骤:标量函数
通过执行
DB::scalar($query);
,您将从第一个结果 * 中获得第一列的 * 值。这意味着,只要您在查询中选择了正确的列,您就将获得该列的值。[x]选项3
到目前为止,上述选项与您自己的个人解决方案风格相同。***但是,**, 我建议您尽可能多地使用Eloquent。
如果为
competencias2
表定义了一个模型,则可以按如下方式构建查询:Eloquent是Laravel提供的一个非常强大的工具,它允许你做一些非常酷的事情。如果你想得到一个包含所有从查询返回的值的数组,你可以把它改为: