php artisan serve
npm run dev
- 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
- Tạo App Key
php artisan key:generate
- Thiết Lập Timezone
config/app.php : 'timezone' => 'Asia/Ho_Chi_Minh',
- 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
- 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
- chế độ bảo trì
php artisan down
- chuyển về chế độ bình thường
php artisan up
- 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
- 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
- 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
- khi
dd($variable)
thì cái #messages: array:2 [▶] gọi là Collections
- 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
- 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
- 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 viewAlert
: 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 aliasas
<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"/>
- Error : https://laravel.com/docs/10.x/validation#quick-displaying-the-validation-errors
- validate() từ lớp Request()
-
$request->validate($rule, $massage)
-
$rule = ['name_input' => "rule"]
-
$massage = ['name_input.rule'=> "massage"]
- Form Request
php artisan make:request StorePostRequest
- 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)
*/
- Tạo Rule Create Rule
php artisan make:rule Uppercase
to use:
use App\Rules\Uppercase;
$request->validate([
'name' => ['required', 'string', new Uppercase],
]);
- Custom $message trong lang khi dùng trans() : \vendor\laravel\framework\src\Illuminate\Translation\lang\en\validation.php
-
-
-
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()
-
-
-
- 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