Laravel - Làm việc với Cơ sở dữ liệu
Xin chào các bạn đang theo đuổi nghề lập trình! Tôi rất vui mừng được dẫn các bạn vào hành trình đầy thú vị trong thế giới Laravel và quản lý cơ sở dữ liệu. Là một ai đó đã dạy khoa học máy tính trong nhiều năm, tôi có thể đảm bảo rằng việc thành thạo các thao tác cơ sở dữ liệu giống như học骑自行车 - ban đầu có thể看起来 khó khăn, nhưng một khi bạn đã quen thuộc, bạn sẽ dễ dàng zoom qua các dự án của mình!
Kết nối với Cơ sở dữ liệu
Hãy bắt đầu từ cơ bản nhất - kết nối với cơ sở dữ liệu. Hãy tưởng tượng điều này như là giới thiệu ứng dụng Laravel của bạn với người bạn mới, cơ sở dữ liệu. Họ cần phải làm quen với nhau trước khi có thể bắt đầu làm việc cùng nhau!
Cấu hình
Trước hết, chúng ta cần告诉 Laravel cơ sở dữ liệu của chúng ta ở đâu và cách truy cập nó. Laravel làm điều này rất dễ dàng với tệp cấu hình của nó. Mở tệp .env
trong thư mục gốc của dự án, bạn sẽ thấy điều gì đó như thế này:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Những dòng này giống như chỉ đường cho Laravel đến cơ sở dữ liệu của bạn. Hãy phân tích chúng:
-
DB_CONNECTION
: Đây là loại cơ sở dữ liệu bạn đang sử dụng. MySQL là mặc định, nhưng Laravel hỗ trợ các loại khác nữa. -
DB_HOST
: Địa điểm của cơ sở dữ liệu. Đối với phát triển cục bộ, thường là máy tính của bạn (127.0.0.1). -
DB_PORT
: Cổng mà Laravel nên gõ để truy cập cơ sở dữ liệu. -
DB_DATABASE
: Tên của cơ sở dữ liệu của bạn. -
DB_USERNAME
vàDB_PASSWORD
: Mật khẩu bí mật của bạn để vào cơ sở dữ liệu.
Kiểm tra Kết nối
Bây giờ chúng ta đã giới thiệu Laravel với cơ sở dữ liệu, hãy chắc chắn rằng họ đang hòa hợp. Chúng ta có thể làm điều này với một lệnh artisan đơn giản:
php artisan tinker
Bây giờ, hãy thử kết nối:
DB::connection()->getPdo();
Nếu bạn thấy một chuỗi dài số và chữ cái, chúc mừng! Ứng dụng Laravel và cơ sở dữ liệu của bạn giờ đã là bạn thân.
Tạo Bảng
Bây giờ chúng ta đã kết nối, đã đến lúc tạo một số bảng. Trong thế giới cơ sở dữ liệu, bảng giống như các bảng tính nơi chúng ta lưu trữ dữ liệu.
Chuyển dịch
Laravel sử dụng thứ gọi là "chuyển dịch" để tạo và sửa đổi bảng. Hãy tưởng tượng chuyển dịch như một máy thời gian cho cơ sở dữ liệu của bạn - chúng cho phép bạn di chuyển forwards và backwards trong lịch sử cơ sở dữ liệu của bạn.
Để tạo một chuyển dịch, sử dụng lệnh artisan này:
php artisan make:migration create_users_table
Lệnh này tạo một tệp mới trong thư mục database/migrations
. Mở nó ra, và bạn sẽ thấy điều gì đó như thế này:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Đây là như một bản đồ cho bảng của bạn. Hãy phân tích nó:
-
$table->id()
: Tạo một cột ID tự động tăng. -
$table->string('name')
: Tạo một cột lưu trữ tên. -
$table->string('email')->unique()
: Tạo một cột email duy nhất. -
$table->timestamp('email_verified_at')->nullable()
: Tạo một cột timestamp nullable. -
$table->string('password')
: Tạo một cột lưu trữ mật khẩu. -
$table->rememberToken()
: Tạo một cột lưu trữ các token "ghi nhớ". -
$table->timestamps()
: Tạo các cộtcreated_at
vàupdated_at
.
Để thực sự tạo bảng này trong cơ sở dữ liệu của bạn, hãy chạy:
php artisan migrate
Và voilà! Bảng của bạn đã được tạo.
Chèn Dữ liệu
Bây giờ chúng ta có một bảng, hãy.put một số dữ liệu vào đó. Có một vài cách để làm điều này trong Laravel.
Sử dụng Eloquent
Eloquent là ORM (Object-Relational Mapping)内置 trong Laravel. Nó giống như một người dịch giữa mã PHP của bạn và cơ sở dữ liệu của bạn. Dưới đây là cách bạn có thể sử dụng nó để chèn dữ liệu:
use App\Models\User;
$user = new User;
$user->name = 'John Doe';
$user->email = '[email protected]';
$user->password = bcrypt('password');
$user->save();
Trong ví dụ này, chúng ta đang tạo một đối tượng User mới, đặt các thuộc tính của nó, và sau đó lưu nó vào cơ sở dữ liệu. Đó là đơn giản như vậy!
Sử dụng Query Builder
Nếu bạn thích một cách tiếp cận giống như SQL hơn, bạn có thể sử dụng Laravel's Query Builder:
DB::table('users')->insert([
'name' => 'John Doe',
'email' => '[email protected]',
'password' => bcrypt('password'),
]);
Phương pháp này trực tiếp hơn - chúng ta đang nói cho Laravel biết chính xác bảng nào để chèn và dữ liệu nào để sử dụng.
Truy xuất Dữ liệu
Bây giờ chúng ta đãput dữ liệu vào cơ sở dữ liệu, hãy học cách lấy nó ra.
Sử dụng Eloquent
Để truy xuất tất cả người dùng:
$users = User::all();
Để tìm một người dùng cụ thể:
$user = User::find(1);
Để truy xuất người dùng với điều kiện:
$users = User::where('name', 'John Doe')->get();
Sử dụng Query Builder
Để truy xuất tất cả người dùng:
$users = DB::table('users')->get();
Để tìm một người dùng cụ thể:
$user = DB::table('users')->where('id', 1)->first();
Để truy xuất người dùng với điều kiện:
$users = DB::table('users')->where('name', 'John Doe')->get();
Cập nhật Dữ liệu
Cập nhật dữ liệu cũng dễ dàng như chèn dữ liệu. Hãy nhìn vào một vài phương pháp.
Sử dụng Eloquent
$user = User::find(1);
$user->name = 'Jane Doe';
$user->save();
Sử dụng Query Builder
DB::table('users')
->where('id', 1)
->update(['name' => 'Jane Doe']);
Xóa Dữ liệu
Cuối cùng, hãy học cách xóa dữ liệu khỏi cơ sở dữ liệu của chúng ta.
Sử dụng Eloquent
$user = User::find(1);
$user->delete();
Sử dụng Query Builder
DB::table('users')->where('id', 1)->delete();
Và thế là xong! Bạn đã học được các основ làm việc với cơ sở dữ liệu trong Laravel. Nhớ rằng, thực hành làm cho hoàn hảo. Đừng ngần ngại thử nghiệm và thử các truy vấn khác nhau. Trước khi bạn biết điều đó, bạn sẽ trở thành một phù thủy cơ sở dữ liệu!
Dưới đây là bảng tóm tắt các phương pháp chúng ta đã covered:
Thao tác | Eloquent | Query Builder |
---|---|---|
Chèn | $user = new User; $user->save(); |
DB::table('users')->insert([]); |
Truy xuất Tất cả | User::all(); |
DB::table('users')->get(); |
Truy xuất Một | User::find(1); |
DB::table('users')->where('id', 1)->first(); |
Cập nhật | $user->save(); |
DB::table('users')->where('id', 1)->update([]); |
Xóa | $user->delete(); |
DB::table('users')->where('id', 1)->delete(); |
Chúc mừng các nhà quản lý cơ sở dữ liệu tương lai!
Credits: Image by storyset