小编ind*_*ock的帖子

如何在DQL中按NULL排序?

我正在使用Symfony2框架和使用Doctrine ORM构建应用程序.我有一张航空公司的表格,其中缺少一些IATA代码.我正在输出一个按此IATA代码排序的列表,但是我得到了一个不合需要的结果,即带有空IATA代码的记录在顶部排序.

在MySQL中,这很简单,ORDER BY ISNULL(code_iata), code_iata但我对DQL的等价物一无所知.我试过了

$er->createQueryBuilder('airline')->orderBy('ISNULL(airline.codeIata), airline.codeIata', 'ASC')
Run Code Online (Sandbox Code Playgroud)

但这给了我一个语法错误.

学说文档也没有给我答案.有办法吗?

dql symfony doctrine-orm

4
推荐指数
4
解决办法
8772
查看次数

如何从Twig模板中的相关对象输出数据?

我对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();
}
Run Code Online (Sandbox Code Playgroud)

并将getAllFlights()传递给我的Twig模板,如下所示:

$flights = $em->getRepository('FlightcaseBookingBundle:Flight')->getAllFlights();   

return $this->render('FlightcaseBookingBundle:Flight:list.html.twig', array('flights' => $flights));
Run Code Online (Sandbox Code Playgroud)

而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 %}
Run Code Online (Sandbox Code Playgroud)

但是我得到一个丑陋的,神秘的异常告诉我"类代理\ FlightcaseBookingBundleEntityAirlineProxy的对象无法转换为字符串"这使我相信我需要获取Airline对象中的特定属性,例如IATA代码以字符串形式输出.但是如何在Twig模板中访问$ airline-> getIataCode()?或者我的存储库中有一种方法可以将相关对象转换为字符串吗?

symfony twig

3
推荐指数
1
解决办法
6779
查看次数

标签 统计

symfony ×2

doctrine-orm ×1

dql ×1

twig ×1