Series: Xây dựng ứng dụng Web với Laravel 5 và AngularJS phần 1
Laravel 5 và AngularJS Phần 1: Cài đặt Laravel & Tạo mới Project
Chúng ta sẽ sử dụng Laravel 5.1 cho tutorial này. Việc đầu tiên là cài Composer. Nếu bạn chưa biết Composer là gì và cài đặt ra sao thì theo hướng dẫn này nhé: Install Composer
Sau khi cài Composer thì mở command line lên và dùng câu lệnh này để cài đặt Laravel
1
| composer global require "laravel/installer" |
Sau khi đã cài đặt Laravel thì bạn có thể tạo mới Laravel project sử dụng câu lệnh laravel new:
1
| laravel new projectname |
Lưu ý rằng bạn cần tạo biến môi trường cho laravel nếu như muốn câu lệnh laravel new chạy được global. Đơn giản chỉ việc đặt đường dẫn
Hoặc nếu bạn cảm thấy rắc rối thì chỉ việc tạo mới Laravel project bằng Composer luôn cũng rất là đơn giản:
~/.composer/vendor/bin
vào trong biến PATH của Environment Variables.Hoặc nếu bạn cảm thấy rắc rối thì chỉ việc tạo mới Laravel project bằng Composer luôn cũng rất là đơn giản:
1
| composer create-project laravel /laravel blog "5.1.*" |
Chi tiết xem thêm tại Laravel Install Documentation.
Sau khi đã tạo được project thì khởi động webserver lên (sử dụng XAMPP, LAMP, hoặc MAMP chẳng hạn) và chạy lệnh này ở thư mục gốc project bạn mới tạo:
1
| php artisan serve |
Mở browser lên và truy cập
http://localhost:8000
bạn sẽ thấy front page của Laravel.
Tiếp theo chúng ta sẽ cài đặt và sử dụng Laravel-5-Generators package trong project này. Package này sẽ hỗ trợ thêm nhiều câu lệnh artisan mạnh mẽ để generate nhiều thành phần mà mặc định Laravel không hỗ trợ. Cài đặt bằng Composer:
1
| composer require laracasts /generators --dev |
Bây giờ thì mở file app/Providers/AppServiceProvider.php lên và cập nhật register function lại như sau:
1
2
3
4
5
6
| public function register() { if ( $this ->app->environment() == 'local' ) { $this ->app->register( 'Laracasts\Generators\GeneratorsServiceProvider' ); } } |
Chạy lệnh
1
| php artisan |
và bạn sẽ thấy chúng ta có thêm nhiều command ở khu vực make:*
Cài đặt Database, Tạo Migration và Chèn Dummy data
Cài đặt Database
Đổi tên file .env.example ở thư mục gốc thành .env. Đây là file cấu hình của Laravel. Sau đó mở file .env lên và sửa lại các thông tin cho khớp với database, username và password mà bạn sử dụng.
DB_HOST=localhost
DB_DATABASE= your_database_name
DB_USERNAME= your_database_username
DB_PASSWORD= your_database_password
DB_DATABASE= your_database_name
DB_USERNAME= your_database_username
DB_PASSWORD= your_database_password
Tạo Migration
Migration giống như là version controll của database trong ứng dụng Laravel vậy. Sử dụng migration giúp bạn và team lập trình dễ dàng quản lý cũng như sửa đổi cập nhật database mà không sợ xảy ra conflict. Chi tiết ở Laravel Migrations.
Gõ lệnh này vào command line:
Gõ lệnh này vào command line:
1
| php artisan make :migration create_jokes_table |
Một file migration mới vừa được tạo ra ở thư mục database/migrations. Mở nó lên và update lại như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateJokesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create( 'jokes' , function (Blueprint $table ) { $table ->increments( 'id' ); $table ->text( 'joke' ); $table ->integer( 'user_id' ); $table ->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop( 'jokes' ); } } |
Như vậy, bảng jokes sẽ có các cột là id (tăng tự động), joke (lưu nội dung), user_id (lưu user mà submit nội dung joke) và timestamps. Function up sẽ có nhiệm vụ tạo mới table còn function down có tác dụng ngược lại: revert lại trạng thái migration.
Bây giờ chạy lệnh này để migrate database:
1
| php artisan migrate |
Mở database lên bạn sẽ thấy bạn bảng
jokes
vừa được tạo ra. Kèm theo với đó, Laravel còn mặc định tạo ra thêm ba bảng dữ liệu nữa, bao gồm users, migrations và password_resets.
Bây giờ thì làm rõ hàm down trong migration một chút. Bây giờ chúng ta muốn sửa trường joke thành body trong bảng
jokes
trên. Đơn giản chỉ cần sửa lại function up trong file migration:
1
2
3
4
5
6
7
8
9
| public function up() { Schema::create( 'jokes' , function (Blueprint $table ) { $table ->increments( 'id' ); $table ->text( 'body' ); $table ->integer( 'user_id' ); $table ->timestamps(); }); } |
Bây giờ chúng ta cần rollback lại migration rồi mới migrate lại database được. Lần lượt chạy 2 lệnh:
1
2
| php artisan migrate:rollback php artisan migrate |
Kiểm tra lại bảng jokes trong database và xem xét sự thay đổi!
Chèn dữ liệu giả để phát triển (Dummy Data)
Để chèn nhanh một số dữ liệu nhằm mục đích demo và hỗ trợ testing, chúng ta sẽ sử dụng thư viện Faker nổi tiếng. Cài đặt fzaninotto/faker package bằng Composer:
1
| composer require fzaninotto /faker |
Bây giờ tạo Model Joke:
1
| php artisan make :model Joke |
Sau đó tạo file seed nhằm mục đích chèn dummy data.
1
| php artisan make :seed Jokes |
Bạn có thể thấy chúng ta vừa tạo ra file seeder mới ở thư mục database/seed. Mở file JokesTableSeeder.php và update lại như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| use Illuminate\Database\Seeder; use App\Joke; class JokesTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $faker = Faker\Factory::create(); foreach (range(1,30) as $index ) { Joke::create([ 'body' => $faker ->paragraph( $nbSentences = 3), 'user_id' => $faker ->numberBetween( $min = 1, $max = 5) ]); } } } |
Giải thích về đoạn code trên một chút: Hàm run mỗi khi seed sẽ tạo ra 30 Joke record ở trong cơ sở dữ liệu. Trong đó body sẽ là một đoạn paragraph còn user_id có có giá trị trong khoảng từ 1 đến 5. Chúng ta sử dụng faker để làm được điều đó. Chi tiết xem tạiDocumentation.
Đã xong phần Jokes Seeder, giờ đến lượt tạo seed file cho User:
1
| php artisan make :seed UsersTableSeeder |
Tương tự như Jokes Seeder, update file UsersTableSeeder.php lại như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <?php use Illuminate\Database\Seeder; use App\User; class UsersTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $faker = Faker\Factory::create(); foreach (range(1,5) as $index ) { User::create([ 'name' => $faker ->userName, 'email' => $faker ->email, 'password' =>bcrypt( 'secret' ) ]); } } } |
Laravel sẽ sử dụng faker và tạo ra dummy data cho chúng ta, muốn vậy thì hãy mở file DatabaseSeeder.php ở cùng thư mục ra và sửa lại:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <?php use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); $this ->call(JokesTableSeeder:: class ); $this ->call(UsersTableSeeder:: class ); Model::reguard(); } } |
File này sẽ gọi tới 2 file seeder ở trên và hàm run sẽ hoạt động khi ta gõ lệnh artisan. Tuy nhiên trước khi gõ command thì hãy mở file Joke model trong thư mục app ra và thêm mảng fillable vào:
1
| protected $fillable = [ 'body' , 'user_id' ]; |
Làm như thế chúng ta mới có thể chèn các giá trị body và user_id vào cơ sở dữ liệu.
Cuối cùng là chạy lệnh artisan để seed dữ liệu:
Cuối cùng là chạy lệnh artisan để seed dữ liệu:
1
| php artisan migrate --seed |
Giờ thì mở database ra xem các dữ liệu đã được thêm vào nhé!
Conclusion
Phần 1 của series Xây dựng ứng dụng Web sử dụng Laravel 5 và AngularJS xin tạm thời dừng ở đây. Sang phần 2 chúng ta sẽ tiếp tục các công việc backend như là tạo Routing, Response, Request… Cảm ơn bạn đã theo dõi, hi vọng bạn tiếp tục đồng hành với mình trong những phần tiếp theo của series! Hẹn gặp lại ở phần tới!
Comments
Post a Comment