私はまだ Symfony2 に非常に慣れていないので、気楽にやってください。航空会社や空港など、いくつかの関連フィールドを持つフライトのテーブル (航空券予約システム用) をループしようとしています。カスタムリポジトリで次の方法を使用しています。
public function getAllFlights($limit = 100)
{
$dql = 'SELECT f FROM Flightcase\BookingBundle\Entity\Flight f';
$query = $this->getEntityManager()->createQuery($dql);
$query->setMaxResults($limit);
return $query->getResult();
}
getAllFlights() は次のように Twig テンプレートに渡されます。
$flights = $em->getRepository('FlightcaseBookingBundle:Flight')->getAllFlights();
return $this->render('FlightcaseBookingBundle:Flight:list.html.twig', array('flights' => $flights));
Twig テンプレートは、次のように $flights コレクション内のアイテムを単純にループしています。
{% for flight in flights %}
<tr>
<td>{{ flight.airline }}</td>
<td>{{ flight.origin }}</td>
<td>{{ flight.destination }}</td>
<td>{{ flight.dateFrom }}</td>
<td>{{ flight.timeFrom }}</td>
<td>{{ flight.dateTo }}</td>
<td>{{ flight.timeTo }}</td>
</tr>
{% endfor %}
しかし、 「クラス Proxies\FlightcaseBookingBundleEntityAirlineProxy のオブジェクトを文字列に変換できませんでした」という醜い不可解な例外が発生し、IATA コードなどの Airline オブジェクト内の特定のプロパティを取得して文字列として出力する必要があると思われます。しかし、Twig テンプレート内の $airline->getIataCode() にアクセスするにはどうすればよいでしょうか? または、リポジトリに関連オブジェクトを文字列に変換する方法はありますか?