Bất kỳ ý tưởng nào về cách gỡ lỗi trường đã sửa đổi không được cập nhật? Trường được tạo hoạt động tốt.cakePHP - trường được sửa đổi không cập nhật
Tôi không chắc chắn bạn cần xem mã nào để cho tôi biết!
Cảm ơn
Bất kỳ ý tưởng nào về cách gỡ lỗi trường đã sửa đổi không được cập nhật? Trường được tạo hoạt động tốt.cakePHP - trường được sửa đổi không cập nhật
Tôi không chắc chắn bạn cần xem mã nào để cho tôi biết!
Cảm ơn
Giống như Anh Phạm cho biết, trường modified
và created
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.
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.
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.
Tôi đang sử dụng chức năng Model-> save(). – AlexBrand
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ó
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);
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ế.
Tôi gặp vấn đề tương tự hôm nay và phát hiện ra trường modified
là chỉ đượ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.
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
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