Коллекция из базы данных в Laravel
Давайте на практике получим записи
из базы. Возьмём модель Post
и выберем все посты методом
all:
<?php
namespace App\Http\Controllers;
use App\Models\Post;
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
dump($posts);
}
}
?>
В дампе вы увидите объект, а не обычный массив PHP. Посты лежат внутри этой обёртки. Можно явно посмотреть класс результата:
<?php
namespace App\Http\Controllers;
use App\Models\Post;
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
dump(get_class($posts));
}
}
?>
Выведется что-то вроде
Illuminate\Database\Eloquent\Collection.
Это коллекция Eloquent - наследник
обычной коллекции Laravel. Для нас
сейчас важно: выборка из БД даёт
коллекцию, а не массив.
Тот же результат получите через
get - например, с условием:
<?php
namespace App\Http\Controllers;
use App\Models\Post;
class PostController extends Controller
{
public function index()
{
$posts = Post::where('published', true)->get();
dump($posts);
dump(get_class($posts));
}
}
?>
Снова коллекция. Дальше к ней можно применять методы: фильтровать, сортировать, брать поля и так далее. Их разберём в следующих уроках.
Получите все посты через
Post::all() и выведите
результат через dump.
Выведите класс объекта, который вернула выборка.
Получите посты через get
с любым условием и убедитесь,
что результат тоже коллекция.