»
 »

Quang cao giua trang

Sửa lỗi Call to a member function find() on a non-object khi truy vấn trong CakePHP

Thứ tư - 24/07/2013 14:37
Sửa lỗi Call to a member function find() on a non-object khi truy vấn trong CakePHP

Sửa lỗi Call to a member function find() on a non-object khi truy vấn trong CakePHP

Trong CakePHP, khi bạn viết một action trong controller mà cần truy vấn dữ liệu của cơ sở dữ liệu thì chỉ được phép truy vấn table dựa trên model tương ứng thuộc controller đó. Ví dụ như acction get_posts trong posts_controller thì chỉ được phép truy vấn dữ liệu của bảng posts trong CSDL, và sử dụng model Post để truy vấn($this->Post->find()...). Nếu trong controller đó mà gọi model khác thì sẽ báo lỗi:

Fatal error: Call to a member function find() on a non-object in...

Để sửa lỗi này, bạn phải khai báo với CakePHP là ngoài model mặc định ra thì bạn còn muốn dùng thêm model nào nữa thì khi đó bạn mới truy vấn được. Có 2 cách để khai báo như sau:

1. Khai báo biến $uses:

Cú pháp:
var $uses = array('model hiện tại','model cần dùng'); //1.3 version
 
public $uses = array('model hiện tại','model cần dùng'); //2.x version


Khi sử dụng $uses, bạn cần đặt tên model hiện tại lên đầu tiên để những truy vấn mặc định của controller đó được chính xác. Cách khai báo $uses chỉ dùng một lần tại phần mở đầu của controller, và sau đó sử dụng được tại mọi action trong controller đó mà không cần khai báo thêm.

2. Khai báo loadModel:

Cú pháp:
$this->loadModel('tên-model-cần-sử-dụng');
$this->Model->find(...);

Đối với cách làm này, mỗi khi bạn cần sử dụng model khác thì bạn mới loadModel thì sau đó mới truy vấn được nhé.

Chúc các bạn thành công!

Tổng số điểm của bài viết là: 5 trong 1 đánh giá
Click để đánh giá bài viết

Theo dòng sự kiện

Xem tiếp...

Những tin mới hơn

Những tin cũ hơn

 

Kiểm tra Tên Miền

www.    
Hỗ trợ trực tuyến Hướng dẫn thanh toán
Tên miền Việt Nam
Báo giá Website

Hỗ trợ thanh toán trực tuyến