Jun
24

Một số hàm hữu ích của model

Author admin    Category Manual     Tags

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

Follow us on Twitter! Follow us on Twitter!
Diễn đàn CakePHP cho người Việt Nam

Bài viết mới

Thảo luận mới

TAG

Calendar

June 2010
M T W T F S S
    Jul »
 123456
78910111213
14151617181920
21222324252627
282930  

Lưu trữ

Blogroll

Thống kê

6 khách