2011-07-12 28 views
3

私は、データベースクエリを実行しようとするデータベースがSymfony2の教義

id haveInCircles inOtherCircles datum timestamp 
1 24 14 11.07.2011 1310403840 
1 20 10 10.07.2011 1310317440 
1 10 5 09.07.2011 1310317440 
1 25 17 12.07.2011 1310468838 

のように見えます

$position = $repository->findBy(
    array('id' => $profileId,'datum' => '10.07.2011'), 
    array('timestamp', 'DESC') 
); 

を使用して、私が得る結果は、データベースに常に最後の日のデータです。この場合は'12 .07.2011 'です。

+0

データベースのvarchar(40)とテーブルの主キーであるエンティティ文字列 – calumbrodie

+0

のフィールド(エンティティ内)とカラム(データベース内)のデータタイプは何ですか? – Daniel

+0

に、 –

答えて

1

「データム」のデータベースフィールドが日時の場合は、使用しよう:日付のvarchar型を使用して2011-07-10フォーマット:-)
Symfony2 articles

+0

Doctrineが日時フィールドとして日付を持っていないことは明らかですが、Doctrineはそれを他の形式でフラッシュします。 –

4

はおそらく可能最悪なアプローチです。 doctineフィールドが日付であるので、それに応じてモデルを変更、日付や日時にデータムフィールドを変更して、ような何か:私は検討するアドバイスうスキーマ慣行上

$position = $repository->findBy(
    array('id' => $profileId,'datum' => new Datetime('2011-07-10')), 
    array('timestamp' => 'DESC') 
); 

http://www.php.net/manual/en/datetime.construct.php

ブリーフ: http://brixican.blogspot.ca/2011/04/5-mysql-best-practices-when-designing.html

+0

実際には 'array( 'timestamp' => 'DESC')'でなければなりません。https://doctrine-orm.readthedocs.org/en/latest/reference/working-with-objects.html?highlight=findby#を参照してください。単純条件による –

0

フィールドをDatetime形式に変更する必要があることに同意しますが、開発者モードでSymfony2を使用している場合は、Doctrine ORMクエリビルダに対応するSQLログ(DBクエリ)をチェックできます。何が起きているのか知っているクエリビルダを使用している場合

関連する問題