2017-11-08 11 views
1

私はSilverstripeループとして表示するには、次のSQLクエリを取得しようとしています:SilverstripeでカスタムSQLクエリをテンプレートループとして表示する方法はありますか?

$output = array(); 
if ($query) { 
    foreach ($query as $item) { 
     $output[] = array(
      'Title' => $item['Title'], 
      'DivisionPhoneNumber' => $item['DivisionPhoneNumber'] 
     ); 
    } 
} 

    return $output; 
} 

Debug::show($output);を経由して返されたデータオブジェクトは、次のようになります。

public function FilteredCompanyDivisions($SectionID) 
{ 
    $query = DB::query(
    'SELECT "CompanyDivision"."Title", "Office_CompanyDivisions"."DivisionPhoneNumber" 
    FROM "CompanyDivision" 
    LEFT JOIN "Office_CompanyDivisions" 
     ON "CompanyDivision"."ID" = "Office_CompanyDivisions"."CompanyDivisionID" 
    LEFT JOIN "Section_SectionCompanyDivisions" 
     ON "Section_SectionCompanyDivisions"."CompanyDivisionID" = "CompanyDivision"."ID" 
    WHERE "Section_SectionCompanyDivisions"."SectionID" = '.$SectionID.' 
     AND "Office_CompanyDivisions"."OfficeID" = '.$this->ID); 

次のコードを通してそれを実行すると、データオブジェクトを返します。この:

0 = 
    Title = 
    Widget Fluffing 
    DivisionPhoneNumber = 
    06 666 6666 

しかし、次のテンプレートコードは動作しません。

<% loop FilteredCompanyDivisions($Top.ID) %> 
    <li> 
    <i class="icon-phone"></i> 
    <a href="tel:$DivisionPhoneNumber">$DivisionPhoneNumber</a> - $Title 
    </li> 
<% end_loop %> 

...と戻ってこのHTML:私が間違っているのは何

<li><i class="icon-phone"></i> <a href="tel:"></a> - </li> 

が&がどのように私はSilverstripeでテンプレートループなどのカスタムSQLを表示することができますか?

+0

関数の最後に '$ output'を返しますか? –

+0

@RobbieAverill - はい '' '' return $ output; '' ''は関数の最後にあります。上記のコードを更新しました。 – BaronGrivet

答えて

2

PHP配列を返す代わりにArrayListArrayDataを使用する必要があります。

$output = ArrayList::create(); 
if ($query) { 
    foreach ($query as $item) { 
     $output->push(ArrayData::create(array(
      'Title' => $item['Title'], 
      'DivisionPhoneNumber' => $item['DivisionPhoneNumber'] 
     ))); 
    } 

    return $output; 
} 
+0

ありがとう、それは今働いている。私は、ネイティブのPHPと同じ結果をArrayListを使って試してみました - しかし、私の構文は少しオフでした。 – BaronGrivet

+0

@BaronGrivetいいえ心配:) –

関連する問題