Laravel如何使用Query Builder返回单列值

时间:2014-11-26 08:03:50

标签: php laravel

我想使用SQL Query中的数据,在这里进一步解释我的代码:

    $myquery = DB::table('attendances')->select('user_id')->where('date_only', '=', $newdate)->orderBy('logon','asc')->get();

    $myquery->user_id;

现在我希望我的$ myquery的值为USER_ID的值,如果我使用上面的代码,我会收到错误 - $ myquery-> user_id;

8 个答案:

答案 0 :(得分:19)

编辑:自版本 5.1 pluck不推荐使用,因为 5.2 它的含义完全不同(如lists所示),所以请改用value方法。


您正在尝试获取阵列的属性,因此很明显您会收到错误。

如果您只需要单个字段,请使用pluck(默认返回单个值 - 字符串):

// let's assume user_id is 5

DB::table('attendances')
  ->where('date_only', '=', $newdate)
  ->orderBy('logon','asc')
  ->pluck('user_id');  // "5"

当你需要整行时,first(返回stdObject):

$att = DB::table('attendances')
  ->where('date_only', '=', $newdate)
  ->orderBy('logon','asc')
  ->first();

$att->user_id; // "5"
$att->any_other_column;

get是你想要多个结果(返回简单的stdObjects数组)的时候:

$result = DB::table('attendances')
  ->where('date_only', '=', $newdate)
  ->orderBy('logon','asc')
  ->get();

$result; // array(0 => stdObject {..}, 1 => stdObject {..}, ...)
$result[0]->user_id; // "5"

答案 1 :(得分:15)

那是Laravel 5.3:

$user_id = DB::table('attendances')->select('user_id')->where('date_only', '=', $newdate)->orderBy('logon','asc')->value('user_id');

答案 2 :(得分:4)

这将仅返回user_id

showCirculares

答案 3 :(得分:0)

我觉得有些混乱;但我使用的是Laravel 5.3,并且不推荐使用pluck和value函数,如上所述。

更多说明: 如果只想要所有值,将使用 pluck()代替 get() 当您只需要一个值时,将使用 value()代替 first()

使用方法 all()来获取itmes数组。 用法:

\App\User::whereIn('mobile',['971700000', '965000000'])->select('id')->pluck('id')->all();

答案 4 :(得分:0)

根据latest documentation: 5.6

DB::table('users')->select('name');

可以解决问题。

答案 5 :(得分:0)

DB::table('table_name')->select('column_na')->get();

答案 6 :(得分:0)

如果您已经有数组中的数据,并且只想过滤此类数据,您也可以这样做

  0 => "first_name"
  1 => "middle_name"
]


$users_data = User::where('id', '1')->get($filter_data );
return $users_data; ```

<pre> In laravel 5.4 works perfect for me </pre>

答案 7 :(得分:-2)

 $myquery = DB::table('attendances')->select('user_id')
            ->where('date_only', '=', $newdate)->orderBy('logon','asc')->get();

默认情况下,返回的数据将是对象数组。你需要循环它。

e.g。

foreach($myquery as $i)
{
    echo $i->user_id;
}