Một số hàm hữu ích của model
Model hỗ trợ nhiều hàm để thao tác với csdl, ngoài các hàm hay dùng như find, save, read, delete còn một số hàm khác cũng khá hữu ích, các hàm cơ bản vừa liệt kê sẽ được trình bày trong một bài viết khác.
1. schema($field = false)
- Cho biết thông tin về các field trong table mà model hiện đang ánh xạ. Nếu bạn không truyền tham số, hàm sẽ trả về thông tin của toàn bộ field trong table, nếu bạn truyền vào tham số là tên field thì hàm chỉ trả về thông tin cho filed đó mà thôi!
- Ví dụ, trong ProductCategoriesController tôi dùng đoạn code:
pr($this->ProductCategory->schema()); |
sẽ trả về kết quả như sau:
Array ( [id] => Array ( [type] => integer [null] => [default] => [length] => 11 [key] => primary ) [name] => Array ( [type] => string [null] => [default] => [length] => 150 ) [created] => Array ( [type] => datetime [null] => [default] => [length] => ) [modified] => Array ( [type] => datetime [null] => [default] => [length] => ) ) |
$field: tên cột cần lấy thông tin (có thể bỏ trống)
Các thông tin về field bao gồm: type (kiểu dữ liệu), null (cho phép rỗng hay không), default (giá trị mặc định của field), lenght (chiều dài của field)
2. getColumnTypes()
- Một biến thể từ hàm schema(), trả về kiểu dữ liệu của tất cả các cột trong table
Kết quả ví dụ:
Array ( [id] => integer [name] => string [created] => datetime [modified] => datetime [updated] => datetime ) |
3. getColumnType($column)
- Tương tự hàm getColumnTypes nhưng chỉ trả về thông tin kiểu dữ liệu cho 1 cột do ta truyền vào
$column: tên cột cần lấy thông tin
4. hasField($name, $checkVirtual = false)
- Kiểm tra xem một cột nào đó có tồn tại trong table không. Trả về true (1) nếu tồn tại
$name: tên cột cần kiểm tra
$checkVirtual: có kiểm tra luôn các cột ảo hay không
5. isVirtualField($field)
- Kiểm tra xem một cột nào đó có phải là cột ảo hay không
$field: tên cột cần kiểm tra
6. hasAny($conditions = null)
- Tìm sao có record trong table thỏa điều kiện đưa vào hay không
$conditions: điều kiện kiểm tra, có thể là chuỗi hoặc mảng
7. resetAssociations()
- Chỉ gọi khi bạn từng dùng hàm bindModel trước đó. Mục đích của hàm này là reset các mối quan hệ của model về trạng thái ban đầu bạn thiết lập trong file
8. isUnique($fields, $or = true)
- Kiểm tra trùng dữ liệu
$fields: mảng, có dạng ‘tên cột’ => ‘giá trị’
$or: kiểm tra toàn bộ các cột hay chỉ cần một cột trùng dữ liệu là báo trùng
Ví dụ: trong bảng product_categories có 2 record mà dữ liệu cột name đều là “Đồ nhậu“, khi dùng hàm này
if($this->ProductCategory->isUnique(array('name'=>'Đồ nhậu'))) { echo 'Không trùng'; }else { echo 'Trùng'; } |
kết quả trả về là ‘Trùng‘
Bây giờ ta kiểm tra thêm cột created
if($this->ProductCategory->isUnique(array('name'=>'Đồ nhậu','created'=>'2010-23-06 13:00:00'))) { echo 'Không trùng'; }else { echo 'Trùng'; } |
Kết quả trả về cũng là ‘Trùng‘ vì tham số $or không truyền vào nghĩa là chỉ cần thấy một cột có dữ liệu trùng là báo ‘Trùng’. Bây giờ ta thêm tham số cho $or
if($this->ProductCategory->isUnique(array('name'=>'Đồ nhậu','created'=>'2010-23-06 13:00:00'), false)) { echo 'Không trùng'; }else { echo 'Trùng'; } |
Kết quả trả về là ‘Không trùng’ vì trong bảng không có >2 record mà cột name và cột created đều có dữ liệu là ‘Đồ nhậu’ và ’2010-23-06 13:00:00′
9. query()
- Thực thi câu sql, trả về một mảng
10. isForeignKey($field)
- Kiểm tra một cột nào đó có phải là khóa ngoại của model hiện hành không
$field: tên cột cần kiểm tra
11. getLastInsertID()
- Lấy ID của record mới được thêm vào
12. getNumRows()
- Lấy số kết quả trả về của truy vấn cuối cùng
13. getAffectedRows()
- Lấy số record ảnh hưởng bởi câu truy vấn cuối cùng. Ảnh hưởng ở đây là thao tác update, delete
14. getAssociated($type = null)
- Lấy tất cả model có quan hệ với model hiện hành
$type: kiểu quan hệ. Nếu để null thì lấy hết. Kiểu quan hệ bao gồm: belongsTo, hasOne, hasMany, hasAndBelongsToMany
Post comment
Bài viết mới
- CakePHP version 1.3.12
- Tạo chuỗi ngẫu nhiên với 1 dòng code
- Kỹ thuật “bit field” trong phân quyền
- Làm việc với File và Folder
- CakePHP 1.3.8
- CakePHP 1.3.7 Released
- Ajax trong CakePHP
- Tạo và load file config trong CakePHP
- Làm site đa ngôn ngữ với CakePHP (Phần 1)
- CakePHP 1.3.6 and 1.2.9 released
- CakePHP 1.3.5 released
- Type hinting trong PHP
- CakePHP ra phiên bản mới 1.3.4
- Tích hợp Zend framework vào CakePHP
- Tạo virtual host trên local
- Sử dụng Acl trong cakephp – Phần 2
- Sử dụng Acl trong cakephp – Phần 1
- Sinh code tự động với cake console
- Tự động xóa record ở bảng con khi reocord ở bảng cha bị xóa
- Xác thực người dùng với component Auth
Thảo luận mới
- admin on Sử dụng session trong CakePHP
- admin on Sử dụng session trong CakePHP
- hanh on Sử dụng session trong CakePHP
- bich yen on Sử dụng session trong CakePHP
- admin on Sử dụng session trong CakePHP
- bich yen on Sử dụng session trong CakePHP
- bich yen on Sử dụng session trong CakePHP
- admin on Sử dụng Acl trong cakephp – Phần 1
- admin on Sử dụng session trong CakePHP
- Bich Yen on Sử dụng session trong CakePHP
TAG
Calendar
Lưu trữ
- September 2011 (3)
- July 2011 (1)
- March 2011 (1)
- February 2011 (1)
- November 2010 (4)
- October 2010 (1)
- September 2010 (2)
- August 2010 (9)
- July 2010 (9)
- June 2010 (22)
Blogroll
- Bakery
- Biển đảo Việt Nam
- CakePHP
- CakePHP Google Group
- CakePHP Manual
- CakePHP Questions
- Diễn đàn CakePHP VN

admin
