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

Laravel 5.2 - метод pluck() возвращает массив

Я пытаюсь обновить свой проект L5.1 → L5.2. В руководстве по обновлению есть одна вещь, которая не ясна для меня:

Метод lists в сборке, построителе запросов и запросе Eloquent объекты-строители были переименованы в pluck. Подпись метода остается тем же.

Это нормально, переименовать refactoting от lists() до pluck() не проблема. Но что с полезным pluck() методом, который был в L5.0 и L5.1?

Из 5.0 документации:

Получение одиночной колонки из строки

$name = DB::table('users')->where('name', 'John')->pluck('name');

Какова альтернатива старому методу pluck() в L5.2?

UPDATE:

Пример:

var_dump(DB::table('users')->where('id', 1)->pluck('id'));

L5.1:

// int(1)

L5.2:

// array(1) { [0]=> int(1) }
4b9b3361

Ответ 1

Текущей альтернативой для pluck() является value().

Ответ 2

Laravel Pluck возвращает массив

если ваш запрос:

 $name = DB::table('users')->where('name', 'John')->pluck('name');

тогда массив выглядит так (ключ - это индекс элемента. Автоматически увеличенное значение):

[
    1 => "name1",
    2 => "name2",
    .
    .
    .
    100 => "name100"
]

но если вы делаете так:

$name = DB::table('users')->where('name', 'John')->pluck('name','id');

тогда ключ является актуальным индексом в базе данных.

key||value
[
    1 => "name1",
    2 => "name2",
    .
    .
    .
    100 => "name100"
]

Вы можете установить любое значение в качестве ключа.

Ответ 3

В Laravel 5. 1+ вы можете использовать значение() вместо pluck.

Чтобы получить первый случай, вы можете использовать

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

или использовать,

DB::table('users')->where('id', 1)->pluck('name')->first();

Ответ 4

В исходном примере почему бы не использовать метод select() в запросе базы данных?

$name = DB::table('users')->where('name', 'John')->select("id");

Это будет быстрее, чем использование фреймворка PHP, поскольку он будет использовать SQL-запрос для выбора строки для вас. Для обычных коллекций я не считаю, что это применимо, но поскольку вы используете базу данных...

Larvel 5.3: Указание пункта выбора