Cách Sử Dụng Cơ Bản
Tạo mô hình User thông qua dòng lệnh:
php think make:model index/User
Gọi mô hình:
$nguoiDung = new \app\index\model\User();
$nguoiDung = $nguoiDung->where('id', 3)->find();
var_dump($nguoiDung->toArray());
$nguoiDung = model('user')->where('id', 3)->find();
var_dump($nguoiDung->toArray());
Thêm Dữ Liệu
Thêm một bản ghi:
$nguoiDung = new \app\index\model\User();
$nguoiDung->ten = 'nguyenvana';
$nguoiDung->trangThai = 1;
$nguoiDung->save();
Thêm nhiều bản ghi:
$nguoiDung = model('user');
$danhSach = [
['ten' => 'Nguyễn Văn A', 'trangThai' => 1],
['ten' => 'Nguyễn Văn B', 'trangThai' => 0]
];
$nguoiDung->saveAll($danhSach);
Cập Nhật Dữ Liệu
$nguoiDung = model('user')->where('id', 5)->find();
$nguoiDung->ten = 'Nguyễn Văn C';
$nguoiDung->save();
Xóa Dữ Liệu
$nguoiDung = model('user')->where('id', 5)->find();
$nguoiDung->delete();
Lấy Dữ Liệu
$nguoiDung = model('user')->get(6);
$nguoiDung = model('user')->where('id', 5)->find();
$dsNguoiDung = model('user')->where('id', '>', 6)->select();
foreach ($dsNguoiDung as $nguoiDung) {
dump($nguoiDung->toArray());
}
Truy Vấn Tích Hợp
model('user')->count();
model('user')->max('id');
model('user')->min('id');
model('user')->avg('id');
model('user')->sum('id');
Getter
Mô hình User:
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
public function getTrangThaiAttr($giaTri)
{
$trangThai = [-1 => 'Đã Xóa', 0 => 'Tắt', 1 => 'Hoạt Động', 2 => 'Chờ Duyệt'];
return $trangThai[$giaTri];
}
}
Trong Controller:
$nguoiDung = model('user')->where('id', 6)->find();
var_dump($nguoiDung->trangThai);
Setter
Mô hình User:
public function setTenAttr($giaTri)
{
return strtolower($giaTri);
}
Trong Controller:
$nguoiDung = model('user')->where('id', 6)->find();
$nguoiDung->ten = 'NGUYENVANA';
$nguoiDung->save();
Thời Gian Tự Động Ghi Nhớ
Mô hình User:
protected $autoWriteTimestamp = true;
protected $autoWriteTimestamp = 'datetime';
// Định nghĩa tên trường thời gian
protected $createTime = 'tao_luc';
protected $updateTime = 'cap_nhat_luc';
Tầng Mô Hình
- Tầng Dữ Liệu: app\index\model\User - Định nghĩa các phương thức xác thực và hoàn thành tự động cũng như các giao diện truy cập dữ liệu.
- Tầng Logic: app\index\logic\User - Định nghĩa các logic kinh doanh liên quan đến người dùng.
- Tầng Dịch Vụ: app\index\service\User - Định nghĩa các giao diện dịch vụ liên quan đến người dùng.
Ví dụ về các lớp:
app\index\model\User.php
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
}
Kiểm tra đối tượng: \think\Loader::model('User')
Lớp Logic: app\index\logic\User.php
<?php
namespace app\index\logic;
use think\Model;
class User extends Model
{
}
Kiểm tra đối tượng: \think\Loader::model('User', 'logic');
Lớp Dịch Vụ: app\index\service\User.php
<?php
namespace app\index\service;
use think\Model;
class User extends Model
{
}
Kiểm tra đối tượng: \think\Loader::model('User', 'service');
Chuyển Đổi Dữ Liệu Mô Hình
$nguoiDung->toArray();
$nguoiDung->toJson();
Sự Kiện Mô Hình
Mô hình User:
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
// Khởi tạo
protected function initialize()
{
parent::initialize();
self::event('before_update', function ($nguoiDung) {
// Xử lý sự kiện
});
}
}
| Định Vị | Mô Tả |
| before_insert | Trước khi thêm mới |
| after_insert | Sau khi thêm mới |
| before_update | Trước khi cập nhật |
| after_update | Sau khi cập nhật |
| before_write | Trước khi ghi |
| after_write | Sau khi ghi |
| before_delete | Trước khi xóa |
| after_delete | Sau khi xóa |
Đăng ký nhanh:
User::beforeInsert(function ($nguoiDung) {
if ($nguoiDung->trangThai != 1) {
return false;
}
});
| Định Vị | Mô Tả |
| beforeInsert | Trước khi thêm mới |
| afterInsert | Sau khi thêm mới |
| beforeUpdate | Trước khi cập nhật |
| afterUpdate | Sau khi cập nhật |
| beforeWrite | Trước khi ghi |
| afterWrite | Sau khi ghi |
| beforeDelete | Trước khi xóa |
| afterDelete | Sau khi xóa |
Liên Kết Mô Hình
Liên kết một-một:
hasOne('Tên Mô Hình Liên Kết', 'Tên Khóa Ngoại', 'Tên Khóa Chính', ['Định Nghĩa Biệt Danh Mô Hình'], 'Loại Join');
Ví dụ sử dụng:
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
public function thongTinCaNhan()
{
return $this->hasOne('ThongTinCaNhan', 'id_nguoi_dung', 'id');
}
}
Liên kết một-nhiều:
hasMany('Tên Mô Hình Liên Kết', 'Tên Khóa Ngoại', 'Tên Khóa Chính', ['Định Nghĩa Biệt Danh Mô Hình']);
Ví dụ sử dụng:
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
public function binhLuan(){
return $this->hasMany('BinhLuan', 'id_nguoi_dung', 'id');
}
}