回答

收藏

Laravel:从MySQL查询获取单个值

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

我正在尝试使用laravel从MySQL数据库中获取一个值,但问题是我得到了一个数组。这是我在MySQL命令行中的查询结果:
  E& H- M; R5 y8 tselect groupName from users;
) h5 `6 W" {; e: [$ D5 _# ~( D5 ^4 M( V/ v
+-----------++ Y7 }, U+ r' B9 d) S
| groupName |$ e: }. W5 z' A" J* W3 z: Z
+-----------+9 m* z) }2 h7 s4 \: ^# [
| Admin     |( ^. u/ I0 }/ i- b) Y# n( l  A
+-----------+9 c3 J& Z" S: G/ ]% A* H4 J8 @7 I
我的laravel函数:
! t& o( i- V( V$ }* K; Vpublic static function PermitAddNewUser(){5 g$ _3 Q$ O8 V5 l7 s0 Y1 n9 P
    $username=Session::get('key');3 E, F& u+ H6 K6 k6 V
    $data=DB::select("select groupName from users where username='$username';");2 G* S0 L5 \" |3 R' I! {
    return $data;
; [' Y8 D) P: |% e1 }5 J}8 a! E# U6 r: C1 b/ L4 M  R' J' o7 l
预期的$ data值是一个值为value = Admin的字符串
5 y% T) b! n; s7 \2 v9 y, N. x但是我得到的是: [{"groupName":"Admin"}]6 Y+ {$ [* j0 M  u" p! @
                * R1 q# f" k6 y6 n! M1 S- F
解决方案:
, o6 i7 Y# j4 _2 H/ l1 ^7 t                ( C5 M# l+ a, e' E# D  e
2 {9 A9 S- I9 U& J

9 p/ \) L5 c$ _+ O* u2 l                编辑:
9 g  @, Z+ M& r3 d对不起,我忘了pluck()很多评论:最简单的方法是:
+ V; R3 G. t6 K7 O) Wreturn DB::table('users')->where('username', $username)->pluck('groupName');
5 A0 f6 y2 I  G  m, j) T8 o, e1 e这将直接返回所请求的行的唯一第一个结果作为字符串。
- F8 G# R/ _- S! ?6 g2 H: T使用流利的查询构建器,您仍然将获得一个数组。我的意思是查询生成器不知道从该查询返回多少行。这是您可以做的更清洁的方法
9 E" d+ `# V, C6 ?* \$result = DB::table('users')->select('groupName')->where('username', $username)->first();. ~% C- Y9 V' j1 t
该命令first()告诉queryBuilder仅返回一行,因此不返回任何数组,因此您可以执行以下操作:6 t/ C# Y% F- r- R) D& V1 M$ N0 ?
return $result->groupName;7 [* [; s) h" x7 O% g. x
希望能帮助到你
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则