Подтвердить что ты не робот

Laravel, как вернуть значение одного столбца с помощью Query Builder

Я хочу использовать данные из SQL Query, чтобы объяснить это далее, вот мой код:

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

    $myquery->user_id;

Теперь я хочу, чтобы значение my $myquery было значением USER_ID, я получаю ошибку, если я использовал код выше - $myquery- > user_id;

4b9b3361

Ответ 1

EDIT: Начиная с версии 5.1 pluck устарел, так как 5.2 его значение совершенно иное (в качестве lists используется), поэтому вместо этого используйте value.


Вы пытаетесь получить свойство массива, поэтому, очевидно, вы получаете ошибку.

Если вам нужно только одно поле, используйте pluck (который по умолчанию возвращает строку с единственным значением):

// let 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"

Ответ 2

Это для Laravel 5.3:

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

Ответ 3

Это вернет только user_id

$myquery = DB::table('attendances')->where('date_only', $newdate)->select('user_id')->pluck('user_id')->first();

Ответ 4

Я думаю, что есть некоторая путаница; но я использую Laravel 5.3, а функция pluck и value не устарела, как показано выше.

Для уточнения: pluck() будет использоваться вместо get(), если вы хотите, чтобы все значения были только значение() будет использоваться вместо first(), если требуется только одно значение.

используйте метод all(), чтобы получить массив itmes. Использование:

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

Ответ 6

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

Ответ 7

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

по умолчанию возвращенные данные будут массивом объектов. вам нужно зациклиться на нем.

например.

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