Использование метода срыва Ларавела без ассоциативного массива

Допустим, у меня есть ArticleСборник, и я хочу получить популярные статьи.

Итак, во-первых, я делаю scopePopular() метод в Article метод. Очень просто.

Теперь я хочу получить их ids, так что я сделаю это:

Article::popular->pluck('id');

Результатом будет ассоциативный массив:

[
    0 => 1,
    1 => 34,
    2 => 17
    ...
];

Я хочу получить нормальный массив, без ключей, как:

[1, 34, 17]

Я знаю, что могу сделать что-то вроде этого:

array_values(Article::popular->pluck('id'));

Но я верю, что у Laravel есть гораздо более чистый способ сделать это. Есть идеи?

3 ответа

Все массивы имеют индексы.

[
    0 => 1,
    1 => 34,
    2 => 17
];

равно

[1, 34, 17]

Другими словами:

$a1 = [0 => 1, 1 => 34, 2 => 17];
$a2 = [1, 34, 17];
$a1 === $a2;
// returns True

Ты можешь использовать values() метод, который является оберткой для array_values():

Article::popular->pluck('id')->values();

Это именно то, что вам нужно и что вы получаете, по умолчанию php имеет инкрементный ключ от 0.

Вы хотите увидеть что-то вроде массива JSON, который я предполагаю. Просто сделайте возврат массива, и вы увидите массив JSOn в браузере, но внутренне он такой только.

Пожалуйста, подтвердите и дайте мне знать. Спасибо

$store_type = \App\Websites::find($request->store_id)->first()->store_type;

// Вывод - просто строка типа "live" // была опция типа demo, live, staging ...

Это может быть полезно для кого-то другого.

Другие вопросы по тегам