О web-разработке
и даже немного больше...

Выборка записей из базы данных в Laravel 8.x

Для работы с базами данных в Laravel существует множество методов, которые позволяют взаимодействовать с таблицами, получать и отправлять данные в базу. Ранее мы уже рассматривали пример добавления записей в БД. Основываясь на том примере, тут рассмотрим примеры выборки данных. Для вывода записей давайте создадим отдельную страницу в проекте.

Для этого в роутах (\routes\web.php) следует добавить запись:

Route::get('/contact/all', 'ContactController@messages_list')->name('messages_list');

Таким образом, мы подразумеваем что у нас есть файл контроллер с классом ContactController в котором будет находится метод message_list(). Размещаться файл-контроллер будет соответственно по такому пути:
\app\Http\Controllers\ContactController.php

Взаимодействие с БД будет происходить посредством объекта класса модели Contact. Про то как создавать модели и миграции — на сайте уже есть информация. Чтобы не растягивать описание различных условий выборки, все они будут находится в одном методе, и результаты выборки через массив будут передаваться в шаблон messages.

public function messages_list(){

	// messages list
	$contact = new Contact;
	return view('messages', [
			'data' => $contact->all(), // список всех элементов (сорт. по created_at)
			'single' => $contact->find(1), // одна запись, с id=1
			'random_single' => $contact->inRandomOrder()->first(), // случайная первая запись
			'random_list' => $contact->inRandomOrder()->get(), // список случайных записей
			'list_order' => $contact->orderBy('id','desc')->get(), // список с сортировкой по полю
			'list_order_take' => $contact->orderBy('id','desc')->take(2)->get(), // список с сортировкой по полю и ограничением
			'where_list' => $contact->where('person_name', '==', 'Рустам') // выборка с условием
		]);

}

Как мы уже знаем каждый шаблон в Laravel в конце должен иметь приставку «.blade.php», таким образом, путь к файлу шаблону будет таким:
\resources\views\messages.blade.php

Так как в контроллере передаётся множество данных различных методов выборки, сделаем вывод отдельно для каждых методов в одном файле:

<h2>Одна запись, с id=1</h2>
<div>
	<p>{{ $single->created_at }} | {{ $single->person_name }} | {{ $single->person_email }}<br>
		{{ $single->message }}<hr></p>
</div>


<h2>Список всех элементов (сорт. по created_at)</h2>
<div>
@foreach ($data as $el)
	<div class="aler alert-info">
		<p>{{ $el->created_at }} | {{ $el->person_name }} | {{ $el->person_email }}<br>
		{{ $el->message }}<hr></p>
	</div>
@endforeach
</div>

<h2>Случайная первая запись</h2>
<div>
	<p>{{ $random_single->created_at }} | {{ $random_single->person_name }} | {{ $random_single->person_email }}<br>
		{{ $random_single->message }}<hr></p>
</div>


<h2>Список случайных записей</h2>
<div>
@foreach ($random_list as $el)
	<div class="aler alert-info">
		<p>{{ $el->created_at }} | {{ $el->person_name }} | {{ $el->person_email }}<br>
		{{ $el->message }}<hr></p>
	</div>
@endforeach
</div>


<h2>Список с сортировкой по полю ID</h2>
<div>
@foreach ($list_order as $el)
	<div class="aler alert-info">
		<p>{{ $el->created_at }} | {{ $el->person_name }} | {{ $el->person_email }}<br>
		{{ $el->message }}<hr></p>
	</div>
@endforeach
</div>

<h2>Список с сортировкой по полю и ограничением до 2</h2>
<div>
@foreach ($list_order_take as $el)
	<div class="aler alert-info">
		<p>{{ $el->created_at }} | {{ $el->person_name }} | {{ $el->person_email }}<br>
		{{ $el->message }}<hr></p>
	</div>
@endforeach
</div>


<h2>Выборка с условием</h2>
<div>
@foreach ($list_order_take as $el)
	<div class="aler alert-info">
		<p>{{ $el->created_at }} | {{ $el->person_name }} | {{ $el->person_email }}<br>
		{{ $el->message }}<hr></p>
	</div>
@endforeach
</div>

Разумеется, все эти методы выборки данных маловероятно что будут использоваться одновременно. Одни данные следует выводить в цикле foreach, другие напрямую без цикла. Поэтому в случае необходимости вы можете скопировать нужные участки кода для ваших проектов. Всё собрано в одном месте для удобства – это по-своему некая шпаргалка, которая может оказаться под рукой в нужный момент.

Опубликован: 06.04.2021 г.

См. также:

Как просмотреть SQL запрос в Eloquent Laravel?
Как объявить переменную в шаблоне Laravel Blade?
Проверка на пустоту коллекций Eloquent в Laravel
Как получить URL текущей страницы в Laravel?
Как вывести роуты Laravel в отдельный файл?
Как получить случайные записи из БД в Laravel?
Ограничение выборки (LIMIT) данных в Laravel
Как перенести Laravel на боевой сервер?

Комментарии

  1. HelenEmura пишет:

    I am very grateful to you. Many thanks.

    care

Добавить комментарий для HelenEmura Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта