回答

收藏

Laravel:从MySQL查询获取单个值

技术问答 技术问答 316 人阅读 | 0 人回复 | 2023-09-14

我正在尝试使用laravel从MySQL数据库中获取一个值,但问题是我得到了一个数组。这是我在MySQL命令行中的查询结果:8 d) L7 l5 m& G! \4 i) Y$ q* k
select groupName from users;
: A  U7 y5 `$ j' Q$ `- F7 {
# o, E" u5 M: J+ _. a' o+-----------+5 {, l3 O" d' r1 P- Q
| groupName |
0 Y( @# E) o$ o, M+-----------+
4 I( C3 s2 v7 @: F| Admin     |
- ^; ~2 F) {* h' O; `+-----------+
1 h; e5 C2 l/ l+ O1 j9 V& K0 W我的laravel函数:
' Q9 y8 I8 Z5 e8 k7 S: Npublic static function PermitAddNewUser(){
/ S! N6 |5 G% A    $username=Session::get('key');
& ^: S$ P. O2 W+ ~: B0 O5 p    $data=DB::select("select groupName from users where username='$username';");
' ^  n6 ]! |$ x) C    return $data;
+ ]9 O# A* G( ]& U}0 O: Q9 o6 ?! l1 I* J  v
预期的$ data值是一个值为value = Admin的字符串5 w  U2 Z3 c5 N) Z
但是我得到的是: [{"groupName":"Admin"}]
! B9 t$ [. P' h+ E  E                + r$ C/ {$ f4 g0 X, t0 T
解决方案:
3 C6 j! m  R. T; X7 j; e4 \               
2 S" ~9 j0 W. Y" F: K) Z. w' J
7 J1 [( d( c! j. r6 h
1 ~/ I) _3 @/ X% N6 A5 t. \                编辑:! l& C) l" X' q
对不起,我忘了pluck()很多评论:最简单的方法是:# b" ]/ Q/ g$ r/ J+ U
return DB::table('users')->where('username', $username)->pluck('groupName');
( w3 }% L* h+ O8 Y这将直接返回所请求的行的唯一第一个结果作为字符串。$ X7 ~2 r; A# I- ^# _1 c9 ?
使用流利的查询构建器,您仍然将获得一个数组。我的意思是查询生成器不知道从该查询返回多少行。这是您可以做的更清洁的方法6 N  U5 j/ D- g& |) u
$result = DB::table('users')->select('groupName')->where('username', $username)->first();/ H& T* A! D: e1 x  i
该命令first()告诉queryBuilder仅返回一行,因此不返回任何数组,因此您可以执行以下操作:4 b% d; u; k8 j1 z/ ?( S" T
return $result->groupName;
6 Q, _" t: d" c) P8 N! Y8 |希望能帮助到你
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则