https://itproger.com/course/laravel/6
В файл routes/web.php запишем новый роут:
Route::get('/contact/all', 'ContactController@allData')->name('contact-data');
В файл resources/views/inc/header.blade.php запишем новый пункт в верхнем меню:
<a class="p-2 text-dark" href="{{route('contact-data')}}">Сообщения</a>
В контроллере app/Http/Controllers/ContactController.php создадим новую функцию:
public function allData() {
$contact = new Contact();
dd($contact->all());
}
Здесь мы создаем экземпляр модели Contact и получаем все данные из таблицы contacts. Короткая запись этой функции:
public function allData() {
dd(Contact::all());
}
Создадим вью resources/views/messages.blade.php :
@extends('layouts.app')
@section('title-block')Все сообщения@endsection
@section('content')
<h1>Все сообщения</h1>
@foreach ($data as $el)
<div class="alert alert-info">
<h3>{{ $el->subject }}</h3>
<p>{{ $el->message }}</p>
<p><small>{{ $el->created_at }}</small></p>
<a href="#"><button class="btn-success btn">Детальнее</button></a>
</div>
@endforeach
@endsection
Здесь мы будем получать данные из app/Http/Controllers/ContactController.php в переменной $data.
Передадим в нее данные из app/Http/Controllers/ContactController.php:
public function allData() {
return view('messages', ['data' => Contact::all()]);
}
Функции вывода записей из базы данных
$contact->find(2) // выведет одну запись c id=2 не в формате массива. То есть перебирать ее как массив во вью не нужно.
$contact->inRandomOrder()->first() // выводит одну случайную запись.
$contact->inRandomOrder()->get() // выводит все записи в случайной сортировке.
$contact->orderBy('id', 'asc')->get() // выводит все записи отсортированные по id по возрастанию. Аналог ORDER BY `id` ASC
$contact->orderBy('id', 'asc')->take(1)->get() // выводит одну запись отсортированные по id по возрастанию. Аналог ORDER BY `id` ASC LIMIT 1
$contact->orderBy('id', 'asc')->take(1)->skip(2)->get() // выводит одну запись отсортированные по id по возрастанию начиная с 3 записи. Аналог ORDER BY `id` ASC LIMIT 2,1
$contact->orderBy('id', 'asc')->where('email', '=', 'admin@mail.ru')->get() // выводит все записи у которых email = admin@mail.ru