Получение данных из базы данных и вывод их на сайте – важная часть веб-разработки. Этот материал описывает процесс получения данных из базы данных в Laravel, используя различные функции для выборки и обработки данных.
Настройка маршрутов
В файле routes/web.php добавляем маршрут для страницы «Контакты»:
Route::get('/contact', [ContactController::class, 'allData']);
Используется метод GET. Функция контроллера – allData. Ссылка на страницу в шаблоне:
<a href="/contact">Сообщения</a>
Создание контроллера
В app/Http/Controllers/ContactController.php создаём функцию allData:
public function allData()
{
return view('messengers', ['data' => Contact::all()]);
}
Функция использует модель Contact и метод all() для получения всех записей. Результат передаётся в шаблон messengers.
Создание шаблона
Создаём шаблон resources/views/messengers.blade.php:
<h1>Все сообщения</h1>
@foreach ($data as $item)
<div class="alert alert-info">
<h3>{{ $item->subject }}</h3>
<p>Email: {{ $item->email }}</p>
<p>Дата: {{ $item->created_at }}</p>
<a href="#" class="btn btn-warning">Подробнее</a>
</div>
@endforeach
Цикл foreach перебирает массив $data, выводит тему (subject), email (email) и дату создания (created_at).
Функции для выборки данных
Laravel предоставляет множество функций для работы с базой данных:
- find($id): Получение записи по ID. Например, Contact::find(2) вернет запись с ID 2. В шаблоне результат следует обернуть в массив: return view(‘messengers’, [‘data’ => [Contact::find(2)]]);
- inRandomOrder(): Получение записей в случайном порядке.
- first(): Получение первой записи.
- get(): Получение всех записей (аналогично all()).
- orderBy(‘поле’, ‘направление’): Сортировка по полю (asc – по возрастанию, desc – по убыванию). Пример: Contact::orderBy(‘id’, ‘asc’)->get();
- take($количество): Ограничение количества записей. Пример: Contact::take(2)->get();
- skip($количество): Пропуск записей. Пример: Contact::skip(1)->get();
- where(‘поле’, ‘оператор’, ‘значение’): Фильтрация. Примеры:
- Contact::where(‘subject’, ‘=’, ‘Hello’)->get(); (равно)
- Contact::where(‘subject’, ‘!=’, ‘Hello’)->get(); (не равно)
- Contact::where(‘id’, ‘>’, 1)->get(); (больше)
Функции можно комбинировать. Например, для получения 2 случайных записей: Contact::inRandomOrder()->take(2)->get();
В этом материале рассмотрены основные способы получения и вывода данных из базы данных в Laravel. Различные функции обеспечивают гибкое управление выборкой данных, настройку сортировки, фильтрации и ограничения количества результатов, позволяя создавать динамические веб-страницы.