2012-04-26 29 views
5

Tôi đã có hai câu hỏi nhỏ:symfony: Actas: {Timestampable: ~}

actAs: { Timestampable: ~ } 

gì "~" những gì có nghĩa là trong đoạn mã trên?

Sau đó, tôi đã thấy các bảng có actAs: { Timestampable: ~ } có hai trường (created_at và updated_at).

Có thể liên kết trường updated_at với một trường cụ thể không (tôi cập nhật trường này, sau đó cập nhật_để có được một giá trị mới)?

+0

'updated_at' thường được sử dụng để cho biết rằng * bất kỳ * trường nào trên hồ sơ đã được thay đổi. Xem xét việc tạo một trường riêng cho mục đích bạn đã mô tả. –

Trả lời

14

"~" có nghĩa là bạn sẽ sử dụng giá trị mặc định hoặc cấu hình mặc định. Trong trường hợp của bạn, hành vi Timestampable, sẽ sử dụng giá trị và cấu hình mặc định. Vì vậy, bạn không cần phải xác định lại chúng.

Từ doc, đây là một số cấu hình:

Timestampable: 
    created: 
    name: created_at 
    type: timestamp 
    format: Y-m-d H:i:s 
    updated: 
    disabled: true 

Bạn cũng sẽ tìm thấy điều này "~" (rất nhiều) trong mặc định generator.yml. Bằng cách này, máy phát điện, thậm chí có sản phẩm nào, sẽ tạo ra một quản trị tốt đẹp:

config: 
    actions: ~ 
    fields: ~ 
    list: ~ 
    filter: ~ 
    form: ~ 
    edit: ~ 
    new:  ~ 

Đối với câu hỏi thứ hai của bạn, mục tiêu của Timestampable là cho mỗi thay đổi trên một hàng, lĩnh vực updated_at sẽ được thiết lập với ngày hiện tại . Vì vậy, bạn không cần phải chăm sóc nó.

Edit:

Và nếu bạn muốn tự cập nhật updated_at lĩnh vực:

  • đầu tiên: bạn sẽ phải vô hiệu hóa hành vi timestampable cho lĩnh vực này (xem ví dụ trên
  • thứ hai: bạn sẽ phải tự mình thực hiện hành vi này

Cách dễ nhất là cũ có chức năng preSave của mô hình của bạn và thực hiện công việc tại đây. Giống như:

class Article extends BaseArticle 
{ 
    public function preSave($event) 
    { 
    if(array_key_exists("your_field", $this->getModified()) 
    { 
     $this->setUpdatedAt(time()); 
    } 
    } 
+0

ok, cảm ơn hoàn hảo. Tôi muốn cập nhật update_at chỉ khi chỉ có một trường cụ thể của bảng của tôi được sửa đổi: là nó có thể? – satboy78

+0

Tôi đã cập nhật câu trả lời của mình – j0k

+0

ok, cảm ơn rất nhiều. Tôi sẽ thử nó. – satboy78