2009-08-12 2 views
2

시/전에 "NULL"과 "0"제거, 내 데이터는 다음과 같습니다CakePHP는 내가 "재고"항목의 전체 많은 형태가 시려면

$this->data['Inventory'][#]['description'] 
$this->data['Inventory'][#]['quantity'] 
$this->data['Inventory'][#]['category_id'] 

것은 내가 안입니다 quatity가 0 또는 NULL 인 경우 $ this-> data [ 'Inventory'] [#]를 해제하는 방법을 알고 있어야합니다. 하나의 레코드로 쉽게이 작업을 수행 할 수 있지만 위와 같이 여러 레코드로 수행하는 가장 쉬운 방법은 무엇입니까?

내 본능은 beforeSave()에서 $ this-> 데이터를 반복하고 키가 0이고 값이 0 인 배열 값이나 키 '수량'에 대해 NULL을 설정 해제했다는 것을 알려주는 더 좋은 방법이 있습니까?

답변

0

이 그것을 수행해야합니다

$this->data = array_filter($this->data); 

편집 : 죄송합니다, 죄송합니다이 문제가 해결되지 않습니다. 나는 네가 옳다고 생각한다. 배열을 반복하고 수량의 값을 검사 할 것이다.

+0

FYI, CakePHP는 Set :: filter() 메소드 (http://code.cakephp.org/source/cake/libs/set.php#66)에서 약간 사용자 정의 된 버전을 제공합니다. – deizel

0

나는 네가하고자하는 일을 할 수있는 동안 Nullable 동작을 작성했다. Github (http://github.com/robwilkerson/scratchpad/tree/196e8e8bdbf042f7051f29b077a34ae9265e0983/cakephp/behaviors)에서 사용할 수 있습니다. 공공 소비를 위해 쓰는 것처럼 세련되지는 않지만 기능적입니다. 나는 그것을 제작 과정에서 여러 프로젝트에 사용하고있다.

+0

아 고마워요. 케이크가 자동으로 이렇게 했어. – brndnmg

3

extract CakePHP의 코어 Set 클래스의 메소드를 사용하면 다중 차원 배열을 반복하거나 트리 구조를 거치지 않고도 신속하게 데이터를 필터링 할 수 있습니다.

beforeSave 필터는이 논리의 올바른 위치와 비슷합니다.

관련 문제