laravel 如何只返回字符串形式的值而不是集合形式的值?

oipij1gg  于 2023-04-07  发布在  其他
关注(0)|答案(2)|浏览(150)

这个雄辩的集合提供了这个结果:

$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();

有更好的选择吗?

8i9zcol2

8i9zcol21#

如果你只需要一个值,而不是多个值,pluck不是你想要的。在查询生成器上有一个名为value的方法,它返回一个值:

Model::where('s_id', $s_id)->value('l_id');

Laravel 6.x文档-查询生成器-检索结果-从表中检索单行/列value

jv4diomz

jv4diomz2#

这取决于你想在进程中什么时候做。在查询执行时还是之后。最常见的方法可能是。

$id = Model::where('s_id', $s_id)->first()->l_id;

这将在执行查询后获取字符串,这意味着查询构建器将获取行中的所有列。通常在Laravel中,您不经常使用字符串,而是从模型中获取数据。Model::where('s_id', $s_id)->first()将返回模型并选择其上的l_id属性。
您选择的方法是数据库方式,您只需选择l_id并将其作为集合返回,然后从那里选择第一项。这是一种非常高效的方法,因为数据库完成了所有工作并且非常快。

$id = Model::where('s_id', $s_id)->pluck('l_id')->first();

它之所以是一个集合,主要是为了选择多个id,所以如果你查询返回的多行,就会返回多个id。这里你可以看到一个在条件查询中最常用的pluck的例子。

$teamIds = Team::where('type', 'admin')->pluck('id');

$adminUsers = User::where('team_id', $teamIds)->get();

您的解决方案非常适合您的需要,只是试图澄清为什么要使用它以及如何经常使用它的示例。

相关问题