在 laravel 中使用原始查询从 sql 数据库获取特定列
Getting specific column from sql database using raw query in laravel
我有这个原始查询,它从 table Laravel
中的数据库中提取数据
$username = DB::table('hotspot_users')
->select('userName')
->where('assignedTo', '786')->get();
我得到这些值:[{"userName":"kim"}]
但我只想提取用户名“kim”本身,而不是数组。我尝试这样做但没有成功:
$convert1=json_decode($username);
$newusername=$convert1->userName;
但我得到一个错误:尝试获取 属性 'userName' 的非对象
知道如何解决这个问题
你好
正如你提到的,这是一个数组[{"userName":"kim"}]
所以你有两个选择
首先,你 first
代替了 get
$username = DB::table('hotspot_users')
->select('userName')
->where('assignedTo', '786')->first();
$newusername=$convert1->userName;
其次,获取数组的第一个元素
$username = DB::table('hotspot_users')
->select('userName')
->where('assignedTo', '786')->get();
$username = reset($username);
$convert1=json_decode($username);
$newusername=$convert1['userName'];
您正在将 DB
的结果作为 php stdClass 对象,因此您可以遍历它并获取查询的每个变量。类似下面的代码可能会对您有所帮助。
如果使用get()
$data = DB::table('hotspot_users')
->where('assignedTo', '786')->select('userName')->get();
foreach ($data as $datum) {
$result[] = $datum->userName;
}
如果使用first()
$data = DB::table('hotspot_users')
->where('assignedTo', '786')->select('userName')->first()->userName;
除了你正在做的,你可以这样做:
HotspotUser::where('assignedTo', 786)->pluck('userName');
现在您将拥有一组名称;或者如果你只想要第一个:
HotspotUser::where('assignedTo', 786)->first()->user_name;
(我不确定 属性 是 user_name
还是 userName
;您应该使用简单的列名称以使事情变得更容易。)
我有这个原始查询,它从 table Laravel
中的数据库中提取数据 $username = DB::table('hotspot_users')
->select('userName')
->where('assignedTo', '786')->get();
我得到这些值:[{"userName":"kim"}]
但我只想提取用户名“kim”本身,而不是数组。我尝试这样做但没有成功:
$convert1=json_decode($username);
$newusername=$convert1->userName;
但我得到一个错误:尝试获取 属性 'userName' 的非对象
知道如何解决这个问题
你好
正如你提到的,这是一个数组[{"userName":"kim"}]
所以你有两个选择
首先,你 first
代替了 get
$username = DB::table('hotspot_users')
->select('userName')
->where('assignedTo', '786')->first();
$newusername=$convert1->userName;
其次,获取数组的第一个元素
$username = DB::table('hotspot_users')
->select('userName')
->where('assignedTo', '786')->get();
$username = reset($username);
$convert1=json_decode($username);
$newusername=$convert1['userName'];
您正在将 DB
的结果作为 php stdClass 对象,因此您可以遍历它并获取查询的每个变量。类似下面的代码可能会对您有所帮助。
如果使用get()
$data = DB::table('hotspot_users')
->where('assignedTo', '786')->select('userName')->get();
foreach ($data as $datum) {
$result[] = $datum->userName;
}
如果使用first()
$data = DB::table('hotspot_users')
->where('assignedTo', '786')->select('userName')->first()->userName;
除了你正在做的,你可以这样做:
HotspotUser::where('assignedTo', 786)->pluck('userName');
现在您将拥有一组名称;或者如果你只想要第一个:
HotspotUser::where('assignedTo', 786)->first()->user_name;
(我不确定 属性 是 user_name
还是 userName
;您应该使用简单的列名称以使事情变得更容易。)