2012-04-26 2 views
5

:심포니 : actAs : {Timestampable : ~} 나는 두 개의 작은 질문이있어

actAs: { Timestampable: ~ } 

무엇 "~"무엇을 위의 코드에서 의미?

그런 다음 actAs: { Timestampable: ~ } 테이블에는 두 개의 필드 (created_at 및 updated_at)가 있습니다.

updated_at 필드를 특정 필드에 바인딩 할 수 있습니까 (이 필드를 업데이트 한 다음 updated_at에 새 값 가져 오기).

+0

'updated_at'은 일반적으로 레코드의 * 모든 필드가 변경되었음을 나타 내기 위해 사용됩니다. 설명 된 목적을 위해 별도의 필드를 만드는 것을 고려하십시오. –

답변

14

"~"은 기본값이나 기본 구성을 사용한다는 것을 의미합니다. 귀하의 경우, 행동 Timestampable, 기본값과 구성을 사용합니다. 따라서 다시 정의 할 필요가 없습니다. 또한 기본 generator.yml이 "~"(많이) 찾을 수

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

다음 문서에서

, 여기에 일부 구성입니다. 이러한 방식으로, 발전기, 심지어 빈, 멋진 관리자 생성합니다

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

두 번째 질문에 대한을의 Timestampable의 목표는 행에 각 수정을 위해 updated_at가 현재 날짜로 설정됩니다 분야입니다 . 그래서 당신은 그것을 돌볼 필요가 없습니다.

편집 :

그리고 당신은 수동으로 updated_at 필드 업데이트 할 경우 :

  • 을 첫째 : 당신은 (이 필드의 timestampable 동작을 비활성화
  • 위의 예를 참조 할 것 두 번째 : 당신 스스로 행동을 취해야합니다.

가장 쉬운 방법은 ex 모델의 preSave 기능을 사용하고 여기에서 일하십시오. Like :

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

오케이, 완벽한 감사. 내 테이블의 하나의 특정 필드가 수정 된 경우에만 update_at을 업데이트하고 싶습니다. 가능합니까? – satboy78

+0

나는 내 대답을 – j0k

+0

로 고쳤다. 고마워. 시도해 볼게. – satboy78

관련 문제