2017-09-20 8 views
1

私はアーカイブページを作成していますが、結果を1年ごとに取得してフィルタリングするのに問題があります。

ページタイプが

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

テンプレートは、私はそれを超える機能を使用する場合は、すべての映画を動作しますが、表示さ

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

機能GetFilmsを呼び出すを表示すべき年を選択するドロップダウンを持っています。

私はそのが渡されて一年を使用してフィルタリングすることを変更しようと、

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 DataObjectsに手動でアクセスできることを確認する必要があります。 Film::get()->filter(['Year' => 2013])の場合、データソースとメソッドの入力を問題領域として取り除くと、それらを一緒に戻すことができます。

私はまた、例えば、DataListコントロールのメソッドを使用して連鎖可能なアプローチに離れDataObject::get引数から移動することをお勧めしたい:

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

私を助けてくれてありがとう! 私はvar_dumpを実行し、正しい日付を受け取りました。私もraw 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' film' WHERE 'FilmYear' = '2016'") - > value();動作しません。 最初の提案は、Film :: get() - > filter(['FilmYear' => $ SubType])を返します。働く私は他の人がそうでないときにそれがなぜ働くのかという手がかりを持っていません。 – Trekin

0


すなわち$フィルム=のDataObject ::取得するために$サブタイプから「」余分な削除( "Film"、 "Year '= $ SubType"); $ SubTypeを一重引用符で囲んでリテラルになり、値を評価しないとき

+0

それは本当ではない –

+0

申し訳ありません、私の間違い。私は外側の二重引用符に気付かない –

+0

このDataObject :: get( "Film"、 "Year = '$ SubType'");年なしの ''なし –

関連する問題