6. Получение данных из БД

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', '=', '[email protected]')->get() // выводит все записи у которых email = [email protected]

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии