Laravel 如何使用查询生成器返回单列值

2022-08-30 15:35:07

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

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

    $myquery->user_id;

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


答案 1

编辑:从版本5.1开始被弃用,因为5.2的含义完全不同(像以前一样),所以使用方法代替。plucklistsvalue


您正在尝试获取数组的属性,因此显然您遇到了错误。

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

// let's assume user_id is 5

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

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

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

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

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

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

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

答案 2

这是针对Laravel 5.3的:

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

推荐