Laravel
Содержание
- Quick start
- Запуск проекта после скачки с репозитория
- Полезные пакеты
- Tutorials and docs
- Комманды Artisan
- SQL & Eloquent(Tricks)
- Localization
- Шаблонизатор(Blade)
- Middleware
- Session
- Cookies
- Проблемы и решения
Quick start
# Создание проекта
composer create-project --prefer-dist laravel/laravel my_app
composer create-project laravel/laravel your-project-name 5.3.*
cd my_app
composer install
php artisan serve
Запуск проекта после скачки с репозитория:
- в папке с проектом :
composer update
илиcomposer update --no-dev
(при условии что нет папки vendor) - файл для БД - .env
- php artisan serve
Полезные пакеты
- Laravel Excel
- Laravel Lang - перевод на разные языкы сообщений приложения
Tutorials and docs
Kомманды Artisan
- php artisan serve - запуск сервера
- php artisan make:controller NameController - Создать контроллер
- php artisan make:model task - Создать модель
- php artisan make:model Name -m - Создать миграцию и модель
- php artisan make:middleware MiddlwareName - создать промежуточное ПО
- php artisan make:migration create_tasks_table --create=tasks - Создать миграцию
- php artisan migrate - Запуск миграций (создание таблиц)
- php artisan migrate:refresh - Рефреш миграций (создание таблиц)
- php artisan route:list - Просмотра маршрутов (routes)
- php artisan db:seed - это тестовые записи в БД делаються
- php artisan route:cache - закешить маршруты
- php artisan make:test UserTest - создание теста
SQL & Eloquent(Tricks)
Вызов процедуры из модели
function GetSomething($itemId)
{
return DB::select("call product_with_cats_names('$itemId')");
}
$this->save()
, $this->insert()
, $this->create()
, $user->fill()
, self::find()
.
Сохранение и апдейт данных - //$this->save() - просто создает запись в БД
$this->name = 'Alex';
$this->pass = '1234';
$this->save(); // вернет boolean
// $this->insert() - то же самое что и $this->save(), но как параметр нужен массив
$this->insert([ 'name' => 'Kaleb', 'pass' => 2344 ]); // вернет boolean
// $this->create() - для его работы нужен массив $fillable в Модели, иначе будет ошибка.
// В $fillable должны быть поля которые заполняються, если не будет то в БД будет приходить пустота
$user = $this->create([ 'name' => 'Кракен', 'pass' => 2344 ]); // вернет объект Модели
// $user->fill() - изменяет данные текущего обьекта Модели
$user->fill(['name' => 'Braker']); // изменит данные объекта Модели, но сделает апдейт в БД
$user->save(); // после этого апдейт записи в БД будет, "Кракен" измениться на "Braker"
// userModel::find(id) - находит запись и возвращает обьект Модели с данными записи
$user = $userModel(1);
$user->name = 'Petro';
$user->save(); // апдейт имени
Localization
// получение сообщения в соответствии с языком
// resources/lang/(language)/validation.php - 'alert' => 'внимание'
echo trans('validation.alert'); // выведет внимание
Шаблонизатор(Blade)
IndexController.php
/// передача данных в шаблон
function Index(){
$data = 'hello dudes';
return view('index', ['title' => $data]);
// {{-- коммент --}} в blade
}
Middleware
- создаем middleware
php artisan make:middleware MiddlewareName
- в app\Http\Kernel.php секция -
$routeMiddleware
: вниз дописать"'myauth' => \App\Http\Middleware\MiddlewareName::class,"
- в маршрутах(routes/web):
Route::group(['middleware' => 'myauth'], function(){...}
Session
С сессиями можно работать несколькими способами:
- с помощью метода session() HTTP-запросов,
- с помощью фасада Session (
use Session;
) - с помощью функции session(). При вызове функции session() без аргументов она возвратит весь объект сессии.
/*
* someController.php
*/
use Session; // FACADE for using Session::....
// Create session key
Session::put('cart', $shit);
// Get session
Session::get('key', false); // if no 'key' found - return 'false'
Session::get('key');
Session::all();
// Del session
Session::forget($key);
Session::flush();
// Check for exist
if(Session::has('users'))
index.blade.php
<html>
{{-- Its commentary --}}
<title> {{ $title }} </title> {{-- Out our var --}}
...
</html>
Cookies
use Cookie;
...
// Get cookie
$request->cookie('name');
Cookie::get('name');
Cookie::get('name', 'default');
// Create cookie
$cookie = cookie('name', value, 2880); // делаем куки
$cookie1 = Cookie::make('name', value, 2880); // делаем куки (needs - use Cookie;)
return response($resData)->cookie($cookie)->cookie($cookie1); // без возврата ответки куки не поставяться
return redirect()->back()->cookie($cookie); // без возврата ответки куки не поставяться
// Del cookie
Cookie::forget('name');
Проблемы и решения
1) Если при запуске миграции, не видит новоиспеченную миграцию:
composer dump-autoload -o
2 Ошибка при миграции версия 5.4
. Как решить?
// app/Providers/AppServiceProvider.php
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}