Skip to content

UnicodeLession/Laravel_unicode

Repository files navigation

Tạo mới project laravel

Start Server

php artisan serve
npm run dev

Set up

  1. Check:
  • folder vendor và file .env
  • nếu k có folder vendor thì
  • check trong php.ini và tìm đến extension=zip nếu có ; đằng trước thì xóa đi
  • dùng composer install trong cmd để tạo lại folder vendor
  • nếu không có .env thì dùng .env.example để backup lại
  1. Tạo App Key
php artisan key:generate
  1. Thiết Lập Timezone

config/app.php : 'timezone' => 'Asia/Ho_Chi_Minh',

  1. Thiết lập môi trường file .env
  • Ví dụ: Xây dựng chức năng thanh toán Paypal
    APP_ENV=local : call api sandbox
    APP_ENV=production : call api live

  • DEBUG:
    APP_DEBUG=true : khi code thì để true
    APP_DEBUG=false : deploy thì để false

  1. Database
php artisan migrate

=> check db và sẽ tạo table users... trong db đó

  • Laravel cho phép thay đổi các tham số trong dạng cột, tên cột,... để thực hiện phải cài : ``
composer require doctrine/dbal 
  1. chế độ bảo trì
php artisan down
  1. chuyển về chế độ bình thường
php artisan up
  1. Tạo Hàm Helper với autoload: b1: Tạo app/Helpers/Functions.php b2: vào composer.json đến "autoload" dưới psr-4 thêm "files": ["app/Helpers/Functions.php"] b3: Chạy lệnh dưới
composer dump-autoload

Authentication

  • Cài đặt

  • bước 1:
composer require laravel/ui
  • bước 2:
php artisan ui bootstrap --auth
  • bước 3:
npm run dev
php artisan migrate
  • bước 4: restart laravel
php artisan serve

Socialite: tích hợp login và register với Facebook, Twitter,...

  • bước 1:
composer require laravel/socialite
  • bước 1: Cài:
composer require barryvdh/laravel-debugbar --dev
  • bước 2: ném vào config/app.php -> providers array:
'providers' => [
    // ...
    Barryvdh\Debugbar\ServiceProvider::class,
],
  • bước 3:
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
  • bước 1:
composer require yajra/laravel-datatables-oracle:"^10.3.1"
  • bước 2: ném vào config/app.php -> providers array
'providers' => [
    // ...
    Yajra\DataTables\DataTablesServiceProvider::class,
],
  • bước 3:
php artisan vendor:publish --tag=datatables

Các kiểu khác

  1. khi
dd($variable)

thì cái #messages: array:2 [▶] gọi là Collections

  1. tạo middleware
php artisan make:middleware MiddelwareName 
  • sẽ tạo file trong app/http/Middleware
  • sau khi tạo xong middleware thì phải khai báo trong Kernel.php trong protected $middleware
  • thường áp dụng trong route group để khi truy cập vào con của group thì sẽ chuyển về middleware route đã khai báo
  1. Tạo Controller
php artisan make:controller HomeController
  • sẽ tạo file trong app/http/Controller
php artisan make:controller Admin/ProductsController --resource
  • Tạo ra Controller và dựng sẵn kiểu
  1. Tạo Component
php artisan make:component Alert
  • sẽ tạo file Alert.php trong app/View/Components
  • sẽ tạo file alert.blade.php trong resources/views/components
  • Đăng ký component: thêm vào AppServiceProvider
use Illuminate\Support\Facades\Blade;
use App\View\Components\Alert;

function boot(){
    Blade::component('package-alert', \App\View\Components\Alert::class);
}
  • package-alert : Tên dùng để gọi component bên view
  • Alert : Tên class component đã tạo ở trên
  • Gọi ra trong view
<x-package-alert />
  • Gọi ra component khi 2 tên trùng nhau nhưng khác nhau bên trong folder
  • NOTE khi dùng use thì phải dùng alias as
<x-input.button />
<x-forms-input />
  • Truyền dữ liệu vào component
  • NOTE: trong class khai báo dạng camelCase nhưng bên view thì phân cách bởi -
  • Trong Class Alert
public $type, $message, $dataIcon;
public function __construct($type='', $message, $dataIcon)
{
    //
    $this->type = $type;
    $this->message =$message;
    $this->dataIcon = $dataIcon;
}
  • Trong view
<x-package-alert type="danger" : message="Đặt hàng không thành công" : data-icon="check"/>

Validation

  1. Error : https://laravel.com/docs/10.x/validation#quick-displaying-the-validation-errors
  2. validate() từ lớp Request()
  • $request->validate($rule, $massage)

  • $rule = ['name_input' => "rule"]

  • $massage = ['name_input.rule'=> "massage"]

  1. Form Request
php artisan make:request StorePostRequest
  1. Class Validator()
$validation=Validator::make($input, $rules, $messages,$attributes);
/**
 * ?  $input: là mảng dữ liệu chứa các dữ liệu cần validation ( thường truyền $request->all() )
 * ?  $attributes: là mảng chứa các tên trường (có thể bỏ trống)
*/
  1. Tạo Rule Create Rule
php artisan make:rule Uppercase

to use:

use App\Rules\Uppercase;
 
$request->validate([
    'name' => ['required', 'string', new Uppercase],
]);
  1. Custom $message trong lang khi dùng trans() : \vendor\laravel\framework\src\Illuminate\Translation\lang\en\validation.php

DATABASE Laravel

3 phương thức truy vấn DB laravel

  • Truy vấn SQL thuần

    • Query Builder

      • DB::table('table_name')->get() // lấy ra all dữ liệu của bảng
        DB::table('table_name')->first() // lấy ra 1 bản ghi đầu tiên dữ liệu của bảng
      • // https://laravel.com/docs/10.x/queries#additional-where-clauses
        // https://www.w3schools.com/sql/sql_where.asp
        
        DB::table('table_name')->where('column', 'compare', 'value')
        //compare: '>' ; '<' ; '>=' ; '<=' ; '!=' | nếu không có thì sẽ là '=' | compare: '<>' = khác
        // 2 cái dưới giống nhau và dạng (WHERE ... AND ...)
        ->where('id', '>=', '2') -> where('id', '<', '7')
        ->where([['id', '>=', '2'], ['id', '<', '7']])
        
        ->orWhere('id', 7) // WHERE ... OR id = 7 => lấy thêm id = 7
        ->whereIn('id', [1,2,3]) // rút gọn của một đống or
        
        // câu lệnh tìm kiếm - pattern: https://www.w3schools.com/sql/sql_like.asp
        ->where('column', 'like', 'pattern')
        
        // truy vấn trong khoảng
        ->whereBetween('id', [2, 7])
        // truy vấn ngoài khoảng
        ->whereNotBetween('id', [2, 7])
      • DB::table('table_name')
      • //! debug 
        DB::table('table_name')->...->toSql() // lấy ra câu lệnh sql
        
        // thêm câu lệnh vào trên cùng function
        DB::enableQueryLog();
        // show sql, bindings, time_:
        dd(DB::getQueryLog);
      • //Nối bảng
        
        //inner join : có group_id thì mới render
        DB::table($this->table)
          ->join('groups', 'users.group_id', '=', 'groups.id')
          ->select('users.*', 'groups.name as group_name')
        // khi đó sẽ trả về tất cả của users cùng với group.name mà trong users.group_id khác null
        
        //left join: bảng bên trái(users) render ra hết mặc kệ có giá trị nối(group_id) hay không
        DB::table($this->table)
          ->leftJoin('groups', 'users.group_id', '=', 'groups.id')
          ->select('users.*', 'groups.name as group_name')
        
        //right join: bảng bên phải(groups) render ra hết mặc kệ có giá trị nối (group_id) hay không
        DB::table($this->table)
          ->rightJoin('groups', 'users.group_id', '=', 'groups.id')
          ->select('users.*', 'groups.name as group_name')
      • //Sắp xếp
        
        //sắp xếp 1 cột
        DB::table('users')
          ->orderBy('name', 'desc')
        
        //sắp xếp nhiều cột
        DB::table('users')
          ->orderBy('name', 'desc')
          ->orderBy('email', 'asc')
        
        //sắp xếp ngẫu nhiên
        DB::table('users')
          ->inRandomOrder()
  • Migration

  • Trong table migrations thì batch là sau khi refresh thì lần khởi tạo php artisan migrate thì batch sẽ là 1 và các lần khởi tạo tiếp theo thì sẽ lần lượt tăng
  • rollback về migrate thứ mấy:
    • mở bảng migrations trong db
    • xác định batch muốn rollback về
    • với các migration chung 1 giá trị batch thì có bao nhiêu migration thì có bấy nhiêu bước
      • php artisan migrate:rollback --step=3
      • với lấy rollback step = 3 sẽ lấy batch to nhất rồi đến cái bước cuối cùng của batch đó
      • rồi sau khi rollback thì nó sẽ quay trở lại 3 bước có thể hiểu là sẽ mất đi 3 migrations
  • Custom Guard: Muốn dùng Authetication với nhiều chức vụ khác nhau như: các user vừa là admin vừa là user và mong muốn login admin có thể kế thừa login như user thì phải

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published