Laravel alapok

A laravel egy php mvc framework. A telepítést nézzük meg, az alap parancsokat és konfigurálást.

Telepítsünk laravel-t (5.8):
 
# apt-get install php-mbstring

# composer install

# composer global require laravel/installer

# export PATH=~/.composer/vendor/bin:$PATH

# laravel new blog

Laravel 8:
curl -s https://laravel.build/example-app | bash

Ha nincs .env fájlunk akkor az .env.example-t nevezzük át, állítsuk be az adatbázis elérést is. Kapcsoljuk be a debug módot is:
 
APP_DEBUG=true

Generáljunk kulcsot:
 
# php artisan key:generate

Route-ok listája:
 
# php artisan route:list

A routes mappában vannak a routing fájlok.

Az api.php-ban a rest api-s route-ok pl:
 
    Route::get('/city', 'CitiesController@index');
    Route::get('/city/show/{Cities}', 'CitiesController@show');
    Route::post('/city/store', 'CitiesController@store');
    Route::put('/city/update/{Cities}', 'CitiesController@update');
    Route::delete('/city/destroy/{Cities}', 'CitiesController@destroy');

Itt a routing-nál tudunk logokat is készíteni az sql hívásokról, amiket a store/logs mappában találhatóak meg:
 
\Event::listen('Illuminate\Database\Events\QueryExecuted', function ($query) {
    Log::info(json_encode($query->sql));
    Log::info(json_encode($query->bindings));
    Log::info( json_encode($query->time) );
});

Lehet route group-osokat csinálni:
 
Route::group(['middleware' => ['jwt.verify', 'jwt.refresh', 'cors']], function () {

Lehet middleware-eket definiálni az app/Http/Middleware mappában. Van after és before.

Request mappában találhatjuk a mező validációkat pl:
 
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\ApiRequest;

class CitiesRequest extends ApiRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required|string|max:50',
            'post_code' => 'required|string|max:32'
        ];
    }
}

Az app\Models mappában találjuk a modelleket.
 
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Cities extends Model
{
    protected $table = 'cities';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'post_code'
    ];

    public $timestamps = false;
}

Itt írhatunk "join-os" lekérdezéseket pl workgroups-hoz a workereket:
 
class Workgroups extends Model
{
    protected $table = 'workgroups';

    public function workers()
    {
        return $this
            ->belongsToMany('App\Models\Workers','workgroups_workers','workgroup_id','worker_id','id','worker_id')
            ->using('App\Models\WorkgroupsWorkers')
            ->withPivot('moved_in', 'moved_out','active');
    }

Provider mappában a RouteServiceProvider.php -ban betudjuk állítani, hogy a roting-ban használt model azonosítókat feltudja oldani:
 
class RouteServiceProvider extends ServiceProvider
{

    public function boot()
    {
        parent::boot();
        
        Route::model('Cities', 'App\Models\Cities');

Kontroller generálás:
 
# php artisan make:controller ProjectController

Cache ürítés:
# php artisan clear:cache

Migráció készítése:
 
# php artisan make:model AdminContent -m

Migráció futtatása:
 
# php artisan migrate

Az 5.8-ban alapból a vue van, de lecserélhetjük reactra:
 
# php artisan preset react
# npm install
# npm install react-router-dom
# npm install --save react-modal-bootstrap

Ahhoz hogy a js és scss fájlokat lefordítsa a webpack a következő parancsokat használhatjuk:
 
# npm run dev
# npm run watch

https://laravel.com/docs/5.8
https://laravel.com/docs/5.8/configuration
https://laravel.com/docs/5.8/migrations
https://laravel.com/docs/5.8/frontend
https://laravel.com/docs/5.8/mix
https://github.com/laravel/laravel
https://appdividend.com/2018/02/23/laravel-5-6-crud-tutorial/
https://stillat.com/blog/2016/12/07/laravel-artisan-route-command-the-routelist-command
https://www.innonic.com/blog/terjunk-webpackre-1-resz/
https://blog.pusher.com/react-laravel-application/
2019.07.20.