回答

收藏

Laravel:从MySQL查询获取单个值

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

我正在尝试使用laravel从MySQL数据库中获取一个值,但问题是我得到了一个数组。这是我在MySQL命令行中的查询结果:1 k% L1 o0 F8 f9 y; h
select groupName from users;
3 @4 {  j! {6 y9 c6 [, |+ h6 w; a( ?% }% J! P7 a
+-----------+) V+ n+ l% X$ Y# H* j) [. F
| groupName |
2 `7 n/ h# L$ g1 ^0 S+-----------+$ S/ z0 s& m4 g
| Admin     |
+ \5 B+ N1 t! y" w9 O- W- D) j+-----------+
' f% o# [3 S9 L# N我的laravel函数:& B8 v3 Z4 F5 \0 l" i: X
public static function PermitAddNewUser(){
6 \6 @' K9 `# b- F    $username=Session::get('key');
  h& R+ Q  H2 F8 U6 r2 @% G) J! x    $data=DB::select("select groupName from users where username='$username';");/ [) `3 N: d& \2 G
    return $data; * ~/ i, P! \( }/ G. y4 R3 K6 o- v
}
' N# W) ^9 u/ Y& F# O$ R预期的$ data值是一个值为value = Admin的字符串7 h5 ^) w# C: r* r! M: n
但是我得到的是: [{"groupName":"Admin"}]1 N$ r4 ?- Y7 e# N$ M
                + F3 V! i/ k* x" ?, F' ]( g
解决方案:7 l& P5 j4 ?" v: A
                " Q2 c7 D$ [+ |1 R1 W  B! I
4 C. C% \( p* N( X
' M/ Y1 n; t. x( z1 Y4 I/ r0 L/ C8 o
                编辑:/ A2 I+ z8 e( y) B3 x7 ]) [
对不起,我忘了pluck()很多评论:最简单的方法是:
5 g" e/ K$ k, e( w' s# ?( m0 Treturn DB::table('users')->where('username', $username)->pluck('groupName');
2 I! l" B' F% C. T* A8 z这将直接返回所请求的行的唯一第一个结果作为字符串。' }) |: Z; U. a1 S( `
使用流利的查询构建器,您仍然将获得一个数组。我的意思是查询生成器不知道从该查询返回多少行。这是您可以做的更清洁的方法
& Z7 B8 m1 x( [8 h, F; @$result = DB::table('users')->select('groupName')->where('username', $username)->first();' c7 f8 b. r$ B$ `: C
该命令first()告诉queryBuilder仅返回一行,因此不返回任何数组,因此您可以执行以下操作:0 X8 W2 o! V+ @# ]; r1 y
return $result->groupName;7 N! g" i9 K* k8 E( U# g% S
希望能帮助到你
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则