2011-08-01 29 views

Trả lời

7

Giống như Anh Phạm cho biết, trường modifiedcreated cần phải là DATETIME và chúng cũng cần đặt mặc định là NULL, làm explained in the CakePHP book about the subject.

+1

Yeap, cả hai đều là DATETIME và mặc định là NULL. Tạo ra không hoạt động, tuy nhiên khi gọi $ this-> Model-> save() trong hàm chỉnh sửa nó không cập nhật trường đã sửa đổi. – AlexBrand

+3

bạn có thể cung cấp lại các trường đó trong biểu mẫu. những người không được phép có mặt trong biểu mẫu hoặc trên lưu để được cập nhật chính xác! – mark

1

Trường đó phải được đặt tên 'được sửa đổi' với loại 'datetime'. Bánh sẽ tự động cập nhật trường này cho bạn. Nếu bạn muốn kiểm tra, chỉ cần truy vấn nó, hoặc nhìn vào cơ sở dữ liệu.

0

Sự cố cũng có thể phát sinh nếu bạn sử dụng truy vấn cập nhật thủ công. Trường chỉ được cập nhật khi bạn sử dụng các chức năng của riêng Cake.

+0

Tôi đang sử dụng chức năng Model-> save(). – AlexBrand

5

Bạn nên thử kiểm tra nếu bạn không sử dụng

$this->ModelName->read(NULL, $id); 

trước khi lưu dữ liệu của bạn, nếu bạn nghĩ rằng bạn đã không - hãy kiểm tra nó

4

khả năng bạn được ghi đè lĩnh vực này nhất, unset lĩnh vực từ các đối tượng trước khi lưu nó như thế này:

unset($user['User']['modified']); 

Bây giờ bạn có thể lưu nó:

$this->User->save($user); 
0

Trong AppModel.php, chỉ cần viết mã sau đây.

public function beforeSave($options = array()) { 
    parent::beforeSave(); 
    if (isset($this->data[$this->alias]['modified'])) { 
     unset($this->data[$this->alias]['modified']); 
    } 
    if (isset($this->data[$this->alias]['created'])) { 
     unset($this->data[$this->alias]['created']); 
    } 

} 

Điều này sẽ phù hợp với tất cả các kiểu máy. Nhưng chúng ta cũng có thể làm điều đó cho từng MODELS riêng lẻ.

Vì chúng tôi đã sử dụng parent::beforeSave(); vì dòng đầu tiên của chúng tôi do đó điều này có thể được ghi đè trong từng MODEL riêng lẻ. Nhờ thừa kế.

+0

Điều này sẽ để lại các trường được sửa đổi và tạo ra dưới dạng null trong cơ sở dữ liệu, ít nhất là trong phiên bản Bánh của tôi. – Snorvarg

+0

Tôi đã thử điều này trong bánh 2.X. Bạn đang sử dụng phiên bản bánh nào? –

+0

Tôi đang sử dụng phiên bản 2.3.1. – Snorvarg

0

Tôi gặp vấn đề tương tự hôm nay và phát hiện ra trường modifiedchỉ được cập nhật nếu có bất kỳ thay đổi nào được thực hiện, nếu không trường sẽ không được chạm.

Các vấn đề liên quan