Osa*_*nna 41 php mysql sql laravel
我正在尝试使用laravel从MySQL数据库中获取单个值,但问题是我得到了一个数组.这是我在MySQL命令行中的查询结果:
select groupName from users;
Run Code Online (Sandbox Code Playgroud)
+-----------+
| groupName |
+-----------+
| Admin |
+-----------+
Run Code Online (Sandbox Code Playgroud)
我的laravel功能:
public static function PermitAddNewUser(){
$username=Session::get('key');
$data=DB::select("select groupName from users where username='$username';");
return $data;
}
Run Code Online (Sandbox Code Playgroud)
期望的$ data值是一个值为= Admin的字符串
但我得到的是: [{"groupName":"Admin"}]
Jar*_*zyk 57
另一个编辑:从版本5.2 pluck是不是不再过时,它刚刚得到新的行为(如同lists以前-见下文旁注):
编辑:从版本5.1 pluck开始不推荐使用,因此请value改为使用:
DB::table('users')->where('username', $username)->value('groupName');
Run Code Online (Sandbox Code Playgroud)
// valid for L4 / L5.0 only
DB::table('users')->where('username', $username)->pluck('groupName');
Run Code Online (Sandbox Code Playgroud)
这将返回groupName找到的第一行字段的单个值.
侧面注意 @TomasButeler评论:由于Laravel不遵循合理的版本控制,有时会出现类似这样的情况.在撰写此答案时,我们有pluck方法从查询中获取SINGLE值(Laravel 4.*&5.0).
然后,L5.1 pluck被弃用了,相反,我们得到value了替换它的方法.
但为了让它变得有趣,pluck事实上从未消失过.相反它只是得到了全新的行为和...弃用的lists方法..(L5.2) - 这是由查询生成器和收集方法之间的不一致引起的(在5.1中pluck对收集和查询的工作方式不同,这是原因).
elf*_*fif 46
编辑:
对不起,我忘记了pluck(),因为很多评论:最简单的方法是:
return DB :: table('users') - > where('username',$ username) - > pluck('groupName');
这将直接将所请求行的第一个结果作为字符串返回.
使用流畅的查询构建器,无论如何都将获得一个数组.我的意思是查询生成器不知道该查询将返回多少行.这是你可以做的更干净一点
$ result = DB :: table('users') - > select('groupName') - > where('username',$ username) - > first();
first()告诉queryBuilder只返回一行所以没有数组,所以你可以这样做:
return $ result-> groupName;
希望能帮助到你
Lea*_*ner 18
从Laravel> = 5.3开始,最好的方法是使用值:
$groupName = \App\User::where('username',$username)->value('groupName');
Run Code Online (Sandbox Code Playgroud)
要么
use App\User;//at top of controller
$groupName = User::where('username',$username)->value('groupName');//inside controller function
Run Code Online (Sandbox Code Playgroud)
当然,您必须为用户表创建一个User User模型,这是与Laravel中的数据库表进行交互的最有效方式.
继续,这是在 Laravel 7.x或8.x中的操作方法
$email = DB::table('users')->where('name', 'John')->value('email');
Run Code Online (Sandbox Code Playgroud)
来源:相信我
根据@Shuhad zaman 评论更新
[编辑]
该pluck功能的预期输出已从Laravel 5.1更改为5.2.因此,为什么它在5.1中被标记为已弃用
在Laravel 5.1中,pluck从查询的第一个结果中获取单个列的值.
在Laravel 5.2中,pluck获取一个包含给定列值的数组.因此它不再被弃用,但它不再像过去那样做了.
value如果您想要第一行中的一列并且您使用的是Laravel 5.1或更高版本,那么简短的回答就是使用该函数.
感谢Tomas Buteler在评论中指出这一点.
[原创] 对于遇到此问题的任何人使用Laravel 5.1,pluck ()已被弃用,将在Laravel 5.2中完全删除.
考虑将来使用代码来证明您的代码value().
return DB::table('users')->where('username', $username)->value('groupName');
Run Code Online (Sandbox Code Playgroud)
使用查询构建器,获取单列值,例如groupName
$groupName = DB::table('users')->where('username', $username)->pluck('groupName');
Run Code Online (Sandbox Code Playgroud)
对于 Laravel 5.1
$groupName=DB::table('users')->where('username', $username)->value('groupName');
Run Code Online (Sandbox Code Playgroud)
或者,使用用户模型,获取单列值
$groupName = User::where('username', $username)->pluck('groupName');
Run Code Online (Sandbox Code Playgroud)
或者,获取第一行然后拆分以获取单列值
$data = User::where('username', $username)->first();
if($data)
$groupName=$data->groupName;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97004 次 |
| 最近记录: |