Метод pluck
Метод pluck применяется к коллекции или результату запроса
Eloquent и возвращает коллекцию значений указанных полей.
Первым параметром передаётся имя поля или нескольких полей
в виде строки через запятую, вторым - ключ для индексации.
Синтаксис
<?php
$collection->pluck($field, $key);
?>
Пример
Давайте извлечём заголовки статей из коллекции:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::all();
$titles = $articles->pluck('title');
$res = $titles->toArray();
print_r($res);
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3", "article 4", "article 5"]
Пример
Давайте извлечём заголовки статей с индексацией по идентификатору:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::all();
$titles = $articles->pluck('title', 'id');
$res = $titles->toArray();
print_r($res);
}
}
?>
Результат выполнения кода:
[
1 => "article 1",
2 => "article 2",
3 => "article 3",
4 => "article 4",
5 => "article 5"
]
Пример
Давайте извлечём заголовки статей только для опубликованных записей:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::where('status', 'published')->get();
$titles = $articles->pluck('title');
$res = $titles->toArray();
print_r($res);
}
}
?>
Результат выполнения кода:
["article 1", "article 3", "article 5"]
Пример
Давайте извлечём несколько полей с использованием точки:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::all();
$data = $articles->pluck('title', 'user.name');
$res = $data->toArray();
print_r($res);
}
}
?>
Результат выполнения кода:
[
"John" => "article 1",
"Jane" => "article 2",
"John" => "article 3",
"Mike" => "article 4",
"Jane" => "article 5"
]
Пример
Давайте используем pluck на массиве:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportCollection;
class ArticleController extends Controller
{
public function index()
{
$users = collect([
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'Mike', 'age' => 35]
]);
$names = $users->pluck('name');
$res = $names->toArray();
print_r($res);
}
}
?>
Результат выполнения кода:
["John", "Jane", "Mike"]
Пример
Давайте используем pluck с несколькими полями:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportCollection;
class ArticleController extends Controller
{
public function index()
{
$users = collect([
['name' => 'John', 'email' => 'john@example.com'],
['name' => 'Jane', 'email' => 'jane@example.com'],
['name' => 'Mike', 'email' => 'mike@example.com']
]);
$data = $users->pluck('name', 'email');
$res = $data->toArray();
print_r($res);
}
}
?>
Результат выполнения кода:
[
"john@example.com" => "John",
"jane@example.com" => "Jane",
"mike@example.com" => "Mike"
]
Пример
Давайте используем pluck с вложенными полями через точку:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportCollection;
class ArticleController extends Controller
{
public function index()
{
$users = collect([
['id' => 1, 'profile' => ['city' => 'Moscow', 'country' => 'Russia']],
['id' => 2, 'profile' => ['city' => 'London', 'country' => 'UK']],
['id' => 3, 'profile' => ['city' => 'Paris', 'country' => 'France']]
]);
$cities = $users->pluck('profile.city', 'id');
$res = $cities->toArray();
print_r($res);
}
}
?>
Результат выполнения кода:
[
1 => "Moscow",
2 => "London",
3 => "Paris"
]