2011-12-14 4 views
0

내 스키마를 작동하지 않습니다. 목록보기에서 start_dateend_date을 비롯한 모든 입력란의 필터를 볼 수 있습니다. 문제는이 두 필터가 제대로 작동하지 않는다는 것입니다. 예 : Start Date에 대한 범위를 제공하고 filter을 눌렀습니다. 응답 페이지에서 웹 디버그 도구 모음의 SQL queries 탭을 보았습니다. 그러나 제공된 제약 조건에 따라 쿼리 제약 조건이 표시되지 않습니다. 난 그냥이 다음을 참조하십시오 Poster 모델 Timestampable 같이심포니 필터

SET NAMES 'UTF8' 
0.00s, "doctrine" connection 

SELECT COUNT(*) AS num_results FROM poster p 
0.00s, "doctrine" connection 

SELECT s.id AS s__id, s.first_name AS s__first_name, s.last_name AS s__last_name, s.email_address AS s__email_address, s.username AS s__username, s.algorithm AS s__algorithm, s.salt AS s__salt, s.password AS s__password, s.is_active AS s__is_active, s.is_super_admin AS s__is_super_admin, s.last_login AS s__last_login, s.created_at AS s__created_at, s.updated_at AS s__updated_at FROM sf_guard_user s 
0.00s, "doctrine" connection 

SELECT p.id AS p__id, p.name AS p__name, p.enabled AS p__enabled, p.layout AS p__layout, p.created_at AS p__created_at, p.updated_at AS p__updated_at, p.slug AS p__slug FROM place p 
0.00s, "doctrine" connection 

SELECT p.id AS p__id, p.name AS p__name, p.filename AS p__filename, p.approved AS p__approved, p.start_date AS p__start_date, p.end_date AS p__end_date, p.user_id AS p__user_id, p.created_at AS p__created_at, p.updated_at AS p__updated_at, p.slug AS p__slug FROM poster p LIMIT 10 
0.00s, "doctrine" connection 

SELECT s.id AS s__id, s.first_name AS s__first_name, s.last_name AS s__last_name, s.email_address AS s__email_address, s.username AS s__username, s.algorithm AS s__algorithm, s.salt AS s__salt, s.password AS s__password, s.is_active AS s__is_active, s.is_super_admin AS s__is_super_admin, s.last_login AS s__last_login, s.created_at AS s__created_at, s.updated_at AS s__updated_at FROM sf_guard_user s WHERE (s.id = '2') LIMIT 1 

지금,하는 created_at 필드가있다. 이 필드의 범위를 지정하여 결과를 필터링하려고 시도했는데 쿼리 탭에서 지금 보았습니다

SELECT COUNT(*) AS num_results FROM poster p WHERE p.created_at >= '2011-12-15 00:00:00' AND p.created_at <= '2011-12-24 23:59:59' 

심포니에 버그가 있습니까? 도와주세요.

업데이트 : : 약간의 조사를 통해 BasePosterFilter.class.php에 해당 addFieldNameColumnQuery 함수가 없음을 알았습니다. 다시 한번 기본 symfony의 동작입니까, 아니면 버그입니까? 당신이 BaseMyModelFormFiltergetFields()에서 보는 바와 같이

답변

0

심포니는 어떤 addFieldNameColumnQuery 단순히 Doctrine (또는 Propel에 대한 addFieldNameColumnCriteria),하지만 대한 필드는 "매핑"되는 저점 자신의 유형 (숫자, 텍스트, 부울, 날짜, 외래 키)를 생성하지 않습니다 입력 필터가 사용될 때 오른쪽 필터를 지정합니다. 새 필드를 추가하는 경우

는 대신, 함수 addMyfieldNameColumnQuery (또는 addMyfieldNameColumnCriteria)에 심포니 얻을 오른쪽 SQL 필터를 추가 할 수 있습니다를 만들 수 있고, myfield을 말한다.

+0

글쎄, 나는'ForeignKey'라는 필드를 가지고 있지만'Text'와 같이 행동하고 싶습니다. 나는'getFields'와 대응하는 위젯/validatorSchemas를 변경했습니다. [documentation] (http://www.symfony-project.org/api/1_4/sfFormFilterDoctrine)과 그 ​​소스에 따르면,'% LIKE % '질의를 추가해야하는'addTextQuery'가 호출되어야합니다. 실제로 일어나는 것은 쿼리가 추가되지 않거나'='쿼리가 추가되는 것입니다. 왜 그런 일이 일어나는거야? – prongs

+0

http://stackoverflow.com/questions/8503938/symfony-filter-change-behaviour-from-field-value-to-field-like-value/8504873에 응답하는 데 도움을 주려고했습니다. – macgyver