Laravel:从MySQL查询中获取单个值

2022-08-30 09:03:49

我正在尝试使用laravel从MySQL数据库中获取单个值,但问题是我得到了一个数组。这是我在MySQL命令行中的查询结果:

select groupName from users;

+-----------+
| groupName |
+-----------+
| Admin     |
+-----------+

我的 laravel 函数:

public static function PermitAddNewUser(){
    $username=Session::get('key');
    $data=DB::select("select groupName from users where username='$username';");
    return $data; 
}

预期$data值是值 = 管理员的字符串

但我得到的是:[{"groupName":"Admin"}]


答案 1

还有另一个编辑:从5.2版本开始不再被弃用,它只是有了新的行为(与以前相同 - 见下面的附注):plucklists

编辑:从版本5.1开始被弃用,所以开始使用:pluckvalue

DB::table('users')->where('username', $username)->value('groupName');    

// valid for L4 / L5.0 only
DB::table('users')->where('username', $username)->pluck('groupName');

这将返回找到的第一行的字段的单个值。groupName


附注 @TomasButeler评论:由于Laravel不遵循合理的版本控制,因此有时会出现这种情况。在撰写此答案时,我们有从查询中获取单个值的方法(Laravel 4.* & 5.0)。pluck

然后,L5.1被弃用,取而代之的是,我们得到了替换它的方法。pluckvalue

但为了让它变得有趣,实际上从未消失过。相反,它只是有了全新的行为和...已弃用的方法..(L5.2) - 这是由查询生成器和集合方法之间的不一致引起的(在5.1中,集合和查询的工作方式不同,这就是原因)。plucklistspluck


答案 2

编辑:

对不起,我忘记了很多人评论:最简单的方法是:pluck()

return DB::table('users')->where('username', $username)->pluck('groupName');

这将直接以字符串形式返回所请求行的唯一第一个结果。

使用流畅的查询生成器,您仍将获得一个数组。我的意思是查询生成器不知道该查询将返回多少行。以下是您可以做些什么来使其更干净一些

$result = DB::table('users')->select('groupName')->where('username', $username)->first();

告诉 queryBuilder 只返回一行,因此没有数组,所以你可以这样做:first()

return $result->groupName;

希望它有帮助


推荐