Laravel

  1. Вопросы собеседований
  2. Ссылки
  3. Установка
  4. Роуты
  5. Контроллер
  6. Подключаем базу
  7. dump($post->title);
  8. 'title' => '123123'
  9. 'title' => 'some post'
  10. 'title' => 'some post',
  11. 'content' => 12
  12. Миграция Для удаления этой миграции
  13. Миграция для изменения столбцов
  14. View
  15. Делаем быстро вёрстку
  16. Как установить файлово?

Вопросы собеседований

Шаблонизатор 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 Видос Запускаем опенсервер Открываем его меню, дополнительно консоль
composer self-update composer create-project laravel/laravel domains/lara.local cd domains/lara.local php artisan serve
router > controller > model > database На обратном пути, controller оборачивает данные во view

Роуты

routes/web.php
Route::get('/1', function () { return '12333'; return view('welcome'); }); Route::get('/2', 'MyTestController@index'); // Название контроллера и его функция

Контроллер

app/Http/Controllers/MyTestController.php
php artisan make:controller -help php artisan make:controller MyTestController
Если не найден контроллер то app/Providers/RouteServiceProvider.php раскомментируем 29 protected $namespace

Подключаем базу

на хостия в доступ ip добавляем % вместо локалхост ставим ftp62.nska.net .env Тут настраиваем доступ к базе потом сбрасываем кэш php artisan config:cache
app/Models Создаст и модель и файл миграции (где создать базу и удалить базу) php artisan make:model Post -m Идём database/migrations public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->timestamps(); $table->softDeletes(); // Для пометки на удаление // В модели Post добавь use SoftDeletes $table->boolean('active')->default(1); $table->string('title'); // 255 $table->string('image'); $table->text('content'); $table->unsignedBigInteger('likes')->nullable(); }); } php artisan migrate // Накатить php artisan migrate:rollback // Откат только последних php artisan migrate:fresh // Удалить все таблицы и заново их создать (потеря данных)
Идём в модели 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'); А в шаблонах
<li><a href="{{ route('main.index') }}">Main</a></li> {{ asset('css/app.css') }} то что в public

Делаем быстро вёрстку

composer require laravel/ui php artisan

Как установить файлово?

Если на самом сервере Apache то в корне создаём файл .htaccess и в нём записываем
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
Если nginx
sudo apt update sudo apt install php-mbstring php-xml php-bcmath sudo nano /etc/nginx/sites-available/travellist server { listen 80; server_name server_domain_or_IP; root /var/www/travellist/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/