2017-04-12 8 views
0

私は教義と新たなんだし、それにドクトリン2複数の要素は、別名、DATE_FORMAT

SELECT DATE_FORMAT(DATE(created_at), '%m-%Y') AS 'date', 
     COUNT(DISTINCT(id)) AS 'value' 
FROM users 
GROUP BY YEAR(DATE(created_at)), MONTH(DATE(created_at)) 

を使用して、私のデシベルでクエリを作成したいを選択し、私はいくつかのドキュメントを読んで、まだいくつかの質問

方法を持っています私は複数の要素を選択する。選択した要素にエイリアスを付け、左の結合を行います。 WEEK()MONTH()とYEAR()関数は使用できますか? DATE_FORMAT(mysqlから)は使えますか?

は、私は、クエリビルダ(http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html)を使用する必要があると考えているあなたに

答えて

1

に感謝します。

日付を考慮すると、symfony datetimeオブジェクトを使用してフォーマットすることができます。

$em = $this->getDoctrine()->getManager(); 
$query = $em->createQuery(
    'SELECT p 
    FROM AppBundle:Product p 
    WHERE p.price > :price 
    ORDER BY p.price ASC' 
) 
->setParameter('price', 19.99); 

$products = $query->getResult(); 
1

あなたが使用するためにdoctrine extensionsをインストールすることができます。左側の場合 はあなたにもDQL(http://symfony.com/doc/current/doctrine.htmlhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html)を試すことができ、leftJoin方法が代わりにQueryBuilderの

<?php 
// $qb instanceof QueryBuilder 

$qb->select('u as aliasName')  //see for alias 
    ->from('User', 'u') 
    ->leftJoin('u', 'phonenumbers', 'p', 'u.id = p.user_id') //see  for left join 
    ->where('u.id = ?1') 
    ->addwhere(u.date < :date) 
    ->orderBy('u.name', 'ASC') 
    ->setParameter('date', $symfonyDateTime->format('Y-m-d')); //see for date 

http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html

を使用することができます参加します

DATE, MINUTE, HOUR, DAY, WEEKなど多くの機能があります。

例:

教義設定

その後
doctrine: 
    dbal: 
     .... 
     orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     entity_managers: 
      default: 
       dql: 
        datetime_functions: 
        DATE_FORMAT: DoctrineExtensions\Query\Mysql\DATE_FORMAT 

あなたは本当に簡単に、このようにエイリアスを追加することができます。

DATE_FORMAT(s.createdAt,'%Y-%m-01') as date