这个雄辩的集合提供了这个结果:
$id = Model::where('s_id', $s_id)->pluck('l_id');
print_r($id)
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => 31242682774
)
)
我如何只返回“31242682774”值作为字符串而不是集合?
**编辑答案:**我所要做的就是:
$id = Model::where('s_id', $s_id)->pluck('l_id')->first();
有更好的选择吗?
2条答案
按热度按时间8i9zcol21#
如果你只需要一个值,而不是多个值,
pluck
不是你想要的。在查询生成器上有一个名为value
的方法,它返回一个值:Laravel 6.x文档-查询生成器-检索结果-从表中检索单行/列
value
jv4diomz2#
这取决于你想在进程中什么时候做。在查询执行时还是之后。最常见的方法可能是。
这将在执行查询后获取字符串,这意味着查询构建器将获取行中的所有列。通常在
Laravel
中,您不经常使用字符串,而是从模型中获取数据。Model::where('s_id', $s_id)->first()
将返回模型并选择其上的l_id
属性。您选择的方法是数据库方式,您只需选择l_id并将其作为集合返回,然后从那里选择第一项。这是一种非常高效的方法,因为数据库完成了所有工作并且非常快。
它之所以是一个集合,主要是为了选择多个id,所以如果你查询返回的多行,就会返回多个id。这里你可以看到一个在条件查询中最常用的pluck的例子。
您的解决方案非常适合您的需要,只是试图澄清为什么要使用它以及如何经常使用它的示例。