5

次のDQLクエリが与えられます:

SELECT
    p,
    (p.views * 0.1) + (p.likes * 0.9) as ratingPhoto
FROM
    AppBundle:Photo p
ORDER BY
    ratingPhoto DESC

結果セットは次のようになります。

array (size=14)
  0 => 
    array (size=2)
      0 => object(Photo)
      'ratingPhoto' => string '1.42' (length=4)
  1 => 
    array (size=2)
      0 => object(Photo)
      'ratingPhoto' => string '1.31' (length=4)
...

オブジェクトのみを取得し、Photo選択した他のフィールドを結果セットから除外するDQL機能はありますか?結果として私が期待するものは次のとおりです。

array (size=14)
  0 => object(Photo)
  1 => object(Photo)
...
4

2 に答える 2

7

探しているのは、ORDER句とHIDDENキーワードの計算値です。

一般に、次のようなことを行う必要があります。

SELECT
    a,
    b,
    (SOME_COMPUTATION()) AS computed
FROM
    ...
ORDER BY
    computed ASC

computedDoctrine ORM 2.3以降、結果セットから値を「非表示」にするには、次のHIDDEN句を使用できます。

SELECT
    a,
    b,
    (SOME_COMPUTATION()) AS HIDDEN computed
FROM
    ...
ORDER BY
    computed ASC

DQLは次のようになります。

SELECT 
    p,
    (p.views * 0.1) + (p.likes * 0.9) AS HIDDEN ratingPhoto
FROM
    AppBundle:Photo p
ORDER BY
    ratingPhoto DESC
于 2013-03-29T12:32:54.683 に答える
-3

DQLは次のように書き直すことができます。

$dql = "SELECT p
FROM AppBundle:Photo p
ORDER BY ((p.views * 0.1) + (p.likes * 0.9)) DESC";
于 2013-03-26T15:25:56.083 に答える