Вопросы собеседований
Шаблонизатор Laravel?
Blade
2. Что такое фасады.
3. Что такое csrf токен в laravel и зачем он нужен.
Что такое Eloquent в laravel?
Laravel содержит ORM-библиотеку Eloquent, предоставляющую способ работы с базой данных, который часто удобнее обычного построителя запросов.
5. Назови как можно больше методов из Eloquent для связи таблиц.
Что такое Artisan в Laravel?
Artisan - название интерфейса командной строки, входящей в состав Laravel. Он предоставляет полезные команды для использования во время разработки вашего приложения. Работает на основе мощного компонента Symfony Console.
Какая команда установит пакет для вендора laravel?
------------
Что такое dd() ?
var_dump() с красивым выводом данных
9. Что такое Middleware и зачем он нужен.
10. Что такое .env файл.
11. Какой пакет из коробки использует Laravel для работы с датой и временем.
Задачи:
- Какую связь таблиц необходимо использовать при создании универсального модуля комментариев,
если комментарии могут принадлежать ко многим моделям (User, Article и т.д)?
- Необходимо создать layout для шапки сайта (чтобы шапка сайта была на всех страницах),
как это можно сделать?
- Как настроить глобальную конфигурацию приложения в laravel, например, изменить язык приложения,
или указать timezone.
Ссылки
Документация
Видео уроки (Laravel Creative)
Видео уроки по API (Grapes)
Видео уроки (Гоша Дударь)
Установка
Документация по установке
На Open server
Видос
Запускаем опенсервер
Открываем его меню, дополнительно консоль
router > controller > model > database
На обратном пути, controller оборачивает данные во view
Роуты
routes/web.php
Если не найден контроллер
то
app/Providers/RouteServiceProvider.php
раскомментируем 29 protected $namespace
Подключаем базу
на хостия в доступ ip добавляем %
вместо локалхост ставим ftp62.nska.net
.env
Тут настраиваем доступ к базе
потом сбрасываем кэш
php artisan config:cache
Идём в модели app/Models
В самой модели желательно добавлять переменную
protected $table = 'posts'; //с названием таблицы и
protected $guarded = false; // Без защиты на внесение данных
до класса добавляем
use App\Models\Post;
В контроллерах в функции добавляем
$post = Post::find(1); // Вытянуть пост по id 1
dump($post);
dd($post);
dd($post->title);
$posts = Post::all(); // Вытянуть все
foreach ($posts as $post)
dump($post->title);
$posts = Post::where('active', 1)->get(); // Вытянуть активные
-first()
laravel.com
Для добавления
В контроллерах
$postsData = [
[
'title' => 'Test 50',
'content' => 'Hello content',
'image' => '123url'
],
[
'title' => 'Test 60',
'content' => 'Hello content',
'image' => 'url'
]
];
Post::create([
'title' => 'eee'
]);
Напоминаю, в самой модели protected $guarded = false;
Обновлять
$post = Post::find(1);
$post->update([
'title' => '123123'
]);
Удалить
$post = Post::find(1);
$post->delete();
$post = Post::withTrashed()->find(1);
$post->restore(); // Восстановить
$post = firstOrCreate([
'title' => 'some post'
], // Что проверять, чтоб не было дублей
[
'title' => 'some post',
'content' => 12
]);
updateOrCreate // Обновить, если есть подобная, если нет создаёт
Разница, что первый не сохранит в базу, если он есть
А второй сохранит, даже если он есть
Миграции
Чтоб при добавлении столбца не терять данные таблицы
то создаём миграцию, которая меняет таблицу
Удалить добавить изменить Атрибут
Или полностью удалить таблицу
php artisan make:migration add_columns_descroption_to_posts_table
$table->text('descroption')->nullable();
$table->text('descroption')->nullable()->after('title');
Ещё там писать откаты миграций..
$table->dropColunn('descroption');
php artisan migrate
Миграция Для удаления этой миграции
php artisan make:migration delete_columns_descroption_to_posts_table
И там ставим действия, которые были при создании, наоборот
Миграция для изменения столбцов
php artisan make:migration edit_columns_content_to_posts_table
$table->renameColumn('content', 'post_content');
может возникнуть ошибка, установите
doctrine dbal composer install гуглим
composer require doctrine/dbal
Изменение типа
php artisan make:migration change_columns_content_to_string_to_posts_table
$table->string('content')->change();
$table->text('content')->change();
Если удалять с таблицы, то смотри с создания..
View
resources/views
Создаём в ручную
posts.blade.php
в контроллере
function index() {
$posts = Post::all();
return view('posts');
return view('posts', compact('posts'));
В самом вью
@foreach($posts as $post)
{{$post->title}}
@endforeach
создаём
resources/views/layouts/main.blade.php
Там создаём
html heder @yield('content') footer
на остальных страницах всё оборачиваем в
@extends('layouts.main') // Это во что оборачиваем всё
@section('content')
123 page
@endsection
в роутах
Route::get('/main', 'MainController@index')->name('main.index');
А в шаблонах