Laravel

= Installation = sudo apt install composer

Creating a project named 'code': composer create-project --prefer-dist laravel/laravel hello cp .env.example .env php artisan key:generate sudo chmod -R 777 storage/

Tesing output: php artisan serve --host 0.0.0.0 --port 8082

Else

sudo nano /etc/apache2/sites-available/laravel.conf  ServerName localhost

ServerAdmin webmaster@localhost DocumentRoot /var/www/html/hello/public

 AllowOverride All 

ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined 

sudo nano /etc/apache2/ports.conf Listen 8082

sudo a2ensite laravel.conf sudo service apache2 restart

= Auth =

Enable Authentication php artisan make:auth

=DB access=

.env DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=hello DB_USERNAME=aman DB_PASSWORD=pwd@123

create database hello; grant all privileges on hello.* to aman@localhost identified by 'pwd@123';

=Site Creation=

ROUTES
cd routes/ sudo nano web.php Route::get('contact', function {    return 'Hello from Aman'; });

Route::get('contact/{category}', function ($category) {   return 'Hello from '.$category. ' Aman'; });

Check resulting pages: http://192.168.1.35/hello/public/contact/ http://192.168.1.35/hello/public/contact/Test

VIEWS
Create a new View file: cd ../resources/views/ sudo touch master.blade.php sudo nano master.blade.php

Paste below contents: <!DOCTYPE html>

   HELLO



Home

 View All <a href="">Add New</a></li> <a href="">Edit/Delete</a></li> </ul>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"> <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js"> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" >

@yield('content')

Edit Routes for this file: cd ../../routes/ sudo nano web.php

Route::get('/home', function {    return view('home'); });

Route::get('/view', function {    return view('view'); });

Route::get('/new', function {    return view('new'); });

Route::get('/edit', function {    return view('edit'); });

Create above defined VIEW page: cd ../resources/views/ sudo touch view.blade.php sudo nano view.blade.php

Paste below contents: @extends('master')

@section('content')

VIEW all content goes here

@endsection

Similarly create HOME page: sudo nano home.blade.php @extends('master')

@section('content')

HOME all content goes here

@endsection

Similarly create NEW page: sudo nano new.blade.php @extends('master')

@section('content')

NEW all content goes here

@endsection

Similarly create EDIT page: sudo nano edit.blade.php @extends('master')

@section('content')

EDIT all content goes here

@endsection

Test above page: http://192.168.1.35/hello/public/home

CONTROLLERS

 * Routes page can call URLs but this is for small applications only.
 * For industrial applications, use Controllers.

Create a Controller: sudo php artisan make:controller RecordController

Edit the above generated file: cd app/Http/Controllers/ sudo nano RecordController.php

Append below contents: class RecordController extends Controller { public function showAll {               return view('view'); }

public function showNew {               return view('new'); }

public function showEdit {               return view('edit'); } }

Update the Routes file to use above controllers: cd ../../routes/ sudo nano web.php

Append below content: Route::get('/view', 'RecordController@showAll');

Route::get('/new', 'RecordController@showNew');

Route::get('/edit', 'RecordController@showEdit');

DATABASE
Create new DB: hello

sudo nano .env

~add DB credentials

Create a DB table using Artisan:

sudo php artisan make:migration create_records_table Created Migration: 2017_09_19_190352_create_records_table

cd database/migrations/ aman@ubuntu:/var/www/html/hello/database/migrations$ ls 2017_09_19_190352_create_records_table.php

Easy to create tables with Migrations Easy to manage them in large environments,

sudo nano 2017_09_19_190352_create_records_table.php

public function up {       Schema::create('records', function (Blueprint $table) {            $table->increments('id');            $table->string('country');            $table->string('city');            $table->string('date');            $table->string('no_of_aliens');            $table->string('color_of_aliens');            $table->timestamps;        });

}

/**    * Reverse the migrations. *    * @return void */   public function down {       Schema::dropIfExists('records'); }

sudo php artisan migrate

ELOQUENT
sudo php artisan make:model Record

cd app/

sudo nano Record.php

class Record extends Model {   protected $table='records'; protected $fillable=['id','country','city','date','no_of_aliens','color_of_aliens'];

}

Feed test data using Seeding:

create seed file:

sudo php artisan make:seeder RecordsTableSeeder

cd database/seeds/ aman@ubuntu:/var/www/html/hello/database/seeds$ sudo nano RecordsTableSeeder.php

use App\Record;   //to import records.php file

class RecordsTableSeeder extends Seeder { public function run {      for ($i=0; $i<20; $i++) {          Record::create (               [                   'country' => "country$i",                   'city' => "city$i",                   'date' => "date$i",                   'no_of_aliens' => "no_of_aliens$i",                   'color_of_aliens' => "color_of_aliens$i"                ]            ); }   } }

sudo nano DatabaseSeeder.php

use App\Record;

class DatabaseSeeder extends Seeder {   public function run {       $this->call('RecordsTableSeeder'); }

}

aman@ubuntu:/var/www/html/hello$ sudo php artisan db:seed Seeding: RecordsTableSeeder