Консоль Ubuntu для веб разработчика

Перемещение по файловой системе выполняется командой cd

cd etc/

просмотр содержимого каталога выполняется командой ls

ls

просмотр содержимого файла выполняется командой nl

nl apache2.conf

Переименование файла выполняется командой mv. (По сути эта команда выполняет перемещение файла)

mv apache2.conf apache2.conf.system-old

Копирование файла команда cp

cp

Создание каталога команда mkdir

mkdir

Редактор vi

Редактировать файлы будем с помощью vi

vi file.name

чтобы войти в режим редактирования текста нажмем i

выход из режима редактирования ESC

Сохранить изменения и выйти :wq

Выход без сохранения :q!

PHP строгая типизация

В php функциях лучше избегать ситуаций когда функция принимает не пойми что, и возвращает не пойми что. Поэтому мы будем использовать строгую типизацию. К примеру у нас есть функция проверяющая какой-то id:

function checkId(string $id) : bool {...

мы явно задаем, что входной параметр у нас имеет тип string. А возвращает функция данные типа bool.

Аутентификация Laravel

Laravel содержит в себе практически готовую систему аутентификации. Развернуть ее можно командой:

php artisan make:auth

Эта команда сформирует шаблоны (view) для аутентификации. Они распологаются в папке auth. А также специальные контроллеры, которые содержатся в папке Auth, в разделе контроллеров.

Шаблоны аутентификации

login.blade.php — отвечает за отображение формы ввода пароля и логина

register.blade.php — отвечает за отображение формы регистрации.

password\reset.blade.php — страница сброса пароля

Как закрыть доступ к определенному разделу сайта?

Для того, чтобы дать доступ только зарегистрированным пользователям, нужно в маршрут добавить посредник ‘middleware’=>[‘web’,’auth’]

группа посредников web перед auth нужна для запуска механизма сессий, перед запуском механизма аутентификации (auth). Напомню, что посредники передают управление по цепочке. То есть сначала отработает посредник web. А затем он передаст управление посреднику auth.

Продолжим. К примеру мы хотим закрыть доступ в раздел profile. В маршруте этого раздела укажем:

Route::group(['prefix'=>'profile', 'middleware'=>['web','auth']], function() {...

MySql заполнение столбца таблицы данными из другой таблицы

Если вам нужен пример запроса то вот он:

UPDATE table_1, table_2
SET table_1.data_1 = table_2.date_2
WHERE table_1.data_1_1 = table_2.data_2_2

А теперь немного пояснения. В блоке UPDATE мы указываем название обеих таблиц. В блоке SET мы указываем в какое поле таблицы.1 мы будем записывать данные из таблицы.2 (и указываем из какого поля). В блоке WHERE мы указываем какие данные из какие данные из таблицы.1 должны соответствовать данным из таблицы.2

Выборка из 2х таблиц MySql

Выбрать однотипные данные из 2х таблиц, можно запросом

SELECT user, name FROM Customers UNION SELECT user, name FROM Employees;

Мы с помощью Union объединяем два запроса. В результате получим данные полей user и name из 2х таблиц Customers и Employees за исключением дублей. То есть если данные полностью совпадут, и результат попадет только одно совпадение.

Laravel создать модель, контроллер и миграцию одной командой

Модель миграцию и контроллер проще всего создать одной командой:

php artisan make:model MyModel -mcr

Добавить данные в seeds

Чтобы добавить данные в seeds нужно выполнить команду:

php artisan db:seed --class=НазваниеВашегоКласса

Хитрости адресации Laravel

При указании адреса в виде (view) типа:

{{ route('sale.update') }}

Мы указываем, что в файле роутинга есть путь /sale и метод (какого-то контроллера) который его обрабатывает update

При указании адреса в виде (view) типа:

{{ route('profile.sale.update') }}

Мы по факту указываем путь в файле роутинга (web). То есть наша запись означает что в каталоге web есть файл роутинга profile. В нем указан путь sale и метод который его обрабатывает update

При адресации в контроллере вида:

return view('home.welcome')

Мы указываем, что в папке views есть папка home и в ней файл вида welcome.blade.php

Laravel контроллеры

Контроллеры — это посредники между запросом пользователя и БД

Создать контроллер можно с помощью команды консоли

php artisan make:controller FirstController

  1. Передача управления контроллеру. В файле роутов (обычно web.php) указываем адрес по которому отработает определенный контроллер и метод этого контроллера, который обработает данный запрос.

Route::get('about', 'FirstController@show');

При переходе по адресу www.site.ru/about отработает контроллер FirstController путем вызова метода show.

В контроллер можно передавать свои параметры, например id страницы

Route::get('page/{id}', 'FirstController@pageshow');

В этом случае в методе show контроллера FirstController должен быть обработчик этих параметров.

Один контроллер может обрабатывать несколько адресов, если для каждого адреса определить соответствующий метод в контроллере

Соответственно в контроллере заводим описанные методы

class FirstController extends Controller
{
    public function show() {

}

    public function pageshow($id) {

}

Именованные маршруты

С помощью именованных маршрутов можно удобно генерировать URL-адреса и делать переадресацию на определенный маршрут.

Вы можете задать имя маршрута, присоеденив метод name() к определению маршрута в файле роутов:

Route::get('user/profile', function () { // })->name('profile');



Laravel каскадное удаление данных

Если в наших таблицах данные связаны по ключу, то необходимо настроить удаление и изменение данных в первичной таблице

$table->foreign('order_id')->references('id')->on('order')
->onUpdate('cascade')->onDelete('cascade');

Эта запись означает, что имеет поле order_id связанное с полем id в таблице order.

При изменении id в таблице order нужно каскадно изменить все значения order_id нашей страницы.

При удалении id в таблице order нужно каскадно удалить все строки с order_id принадлежащие этому id