Laravel: Получение данных из БД — пошаговое руководство

Получение данных из базы данных и вывод их на сайте – важная часть веб-разработки. Этот материал описывает процесс получения данных из базы данных в 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. Различные функции обеспечивают гибкое управление выборкой данных, настройку сортировки, фильтрации и ограничения количества результатов, позволяя создавать динамические веб-страницы.

Что будем искать? Например,программа