回答

收藏

Laravel:从MySQL查询获取单个值

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

我正在尝试使用laravel从MySQL数据库中获取一个值,但问题是我得到了一个数组。这是我在MySQL命令行中的查询结果:! d) b. a+ Q: P. e1 U# ~5 F7 p
select groupName from users;
# y3 _! ~1 X3 d3 W
8 D, w5 O2 C! Z5 d6 f+-----------+
8 B: N* m0 ]$ `( J1 K| groupName |
& x3 U5 m5 z- \' s& ]  _+-----------+! [$ ~; ], U& ?; H9 v, Z
| Admin     |
3 H- q3 C6 L% ]+ a+ t, R! R& W5 c$ V; N+-----------+: L) s$ B2 s" y: |) z
我的laravel函数:1 C2 f$ @5 i: h) U4 f
public static function PermitAddNewUser(){1 _6 \, _+ t& [. R% K
    $username=Session::get('key');
. M% B- R1 b! }7 c: H) J; F0 O8 O/ v    $data=DB::select("select groupName from users where username='$username';");
5 D7 O) I1 D$ m/ l: c# T    return $data;
5 ^4 K( H# ]& h& W1 d1 G4 F}
7 O% r% P5 f  y# W预期的$ data值是一个值为value = Admin的字符串
( y5 @3 `! W7 E% V& v但是我得到的是: [{"groupName":"Admin"}]1 T) O% i/ p0 B' W0 r
                9 g& v5 g9 z; a4 c: R7 g% [+ U% b
解决方案:! H, D# Q$ {: f5 @' e
               
7 p) S# G  ~  a+ T( b4 q' W/ H
$ _+ R. k6 \( P" H, C; X9 w' K* Y- a" d  e8 }; Z1 O
                编辑:
' p# q+ p, j0 N1 x对不起,我忘了pluck()很多评论:最简单的方法是:( S8 b& p/ X# D' _
return DB::table('users')->where('username', $username)->pluck('groupName');
! w6 n2 y! @" ?) P; k这将直接返回所请求的行的唯一第一个结果作为字符串。, X( n$ R0 [& I3 p, |3 a6 @
使用流利的查询构建器,您仍然将获得一个数组。我的意思是查询生成器不知道从该查询返回多少行。这是您可以做的更清洁的方法% e0 d+ x% M( Q( p) [8 A2 h
$result = DB::table('users')->select('groupName')->where('username', $username)->first();
/ f+ P7 u& w3 L+ d+ y5 ~$ G* y4 O该命令first()告诉queryBuilder仅返回一行,因此不返回任何数组,因此您可以执行以下操作:
9 n) e& u1 `! b5 a3 [( Nreturn $result->groupName;' D: z4 x& z  d8 O' i, b1 K
希望能帮助到你
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则