2017-09-20 6 views
1

저는 아카이브 페이지를 만들고 있는데 일년 내내 결과를 가져오고 필터링하는 데 문제가 있습니다.

페이지 유형은 템플릿은 함수 GetFilms에게 호출

private static $db = array(
    "SubType" => "Enum(array('2013', '2014', '2015', '2016', '2017', '2018'))" 
); 

표시해야하는 연도를 선택하는 드롭 다운을 가지고

public function GetFilms() 
{ 
    $films = DataObject::get("Film"); 
    return $films; 
} 

가 작동하지만 모든 영화를 위에 나는 기능을 사용하는 경우 .

나는 그것이 전달 된 연도를 사용하여 필터링을 수정하려고

, 페이지가 더 이상 영화 중 하나를 표시

public function GetFilms($SubType) 
{ 
    $films = DataObject::get("Film","'Year' = '$SubType'"); 
    return $films; 
} 

. 아무도 내가 뭘 잘못하고 있는지 알아?

<% loop GetFilms($SubType) %> 
    <div class="film" data-title="$Title"> 
     <a href="$Top.Link?film=$ID"> 
     <div class="inner"> 
      <h3 class="filmTitle">$Title</h3> 
      <img class="filmImg" src="$FilmImage.URL" alt="$Title" /> 
     </div> 
     </a> 
    </div> 
<% end_loop %> 

여기에 결과를 표시하는 코드입니다

,

는 당신의 도움을 주셔서 감사합니다!

답변

2

디버깅을하는 것이 좋습니다. GetFilms()에 몇 가지 점수를 추가 할 수 있습니다. var_dump($SubType);을 사용하여 템플릿이 전달되는지 확인하십시오. 더미 값을 사용하여 Film DataObject에 수동으로 액세스 할 수 있는지 확인해야합니다 (예 : Film::get()->filter(['Year' => 2013]), 그런 다음 데이터 소스와 메소드 입력을 문제 영역으로 제거한 후에는이를 다시 조립할 수 있습니다.

나는 또한 예는, DataList와 방법을 사용하여 체인 방식 접근 방식에 떨어져 DataObject::get 인수에서 이동 좋을 것

:

public function GetFilms($SubType) 
{ 
    return Film::get()->filter(['Year' => $SubType]); 
} 
+0

도와주세요! var_dump를 완료했으며 올바른 날짜를 받았습니다. 나는 또한 원시 SQL을 사용해 보았습니다. $ films = DB :: query ("SELECT * FROM'film' WHERE'Year' = '2016'") -> value(); 하지만 같은 문제가 발생하여 필름이 보이지 않습니다. 필자는 phpmyadmin에서 정확한 SQL을 실행했으며 결과를 반환했습니다. URL에 /? showqueries를 추가하여 쿼리를 확인하려고했지만 괜찮아 보입니다. – Trekin

+0

열이 'Year'(MySQL의 예약어)라고 불릴 수 있는지 궁금합니다. –

+1

열을 변경했습니다. 'FilmYear'로 변경하고 기능을 업데이트했습니다. DataObject :: get ("Film", "FilmYear '='$ SubType '"); 작동하지 않습니다. DB :: query ("SELECT * FROM'영화 'WHERE'FilmYear' ='2016 '") -> value(); 작동하지 않습니다. 하지만 초기 제안은 Film :: get() -> filter ([ 'FilmYear'=> $ SubType])를 반환합니다. 공장. 나는 다른 사람들이하지 않을 때 그것이 작동하는 이유를 알지 못한다. – Trekin

0


즉 $ 영화에 $ 하위 유형에서 '추가 제거 = 데이터 객체 : 수 ("Film", "Year '= $ SubType"); $ SubType을 작은 따옴표로 묶고 리터럴이되고 값을 계산하지 않으면

+0

그건 사실이 아니에요. –

+0

죄송합니다, 실수. 나는 외부 double quote를 알지 못한다 –

+0

이 DataObject :: get ("Film", "Year = '$ SubType'"); ''년없이 –