Для работы с базами данных в 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, другие напрямую без цикла. Поэтому в случае необходимости вы можете скопировать нужные участки кода для ваших проектов. Всё собрано в одном месте для удобства – это по-своему некая шпаргалка, которая может оказаться под рукой в нужный момент.
I am very grateful to you. Many thanks.
care