kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 gperriard
gperriard
Question

Bagaimana cara membandingkan bidang datetime dari Doctrine2 dengan sebuah tanggal?

Saya ingin mendapatkan item yang dibuat hari ini dengan QueryBuilder dari Doctrine2. Saya ingin membandingkan field createdAt (Datetime) dengan parameter hari ini (Date). Apakah mungkin untuk melakukan hal tersebut dalam satu query?

$qb = $this->createQueryBuilder('i');
$qb->innerJoin('i.type', 'it');
$qb->andWhere('it.name = :type');
$qb->andWhere('i.createdAt < :today');
// i.createdAt == datetime and :today parameter is a date
12 2012-05-21T07:37:45+00:00 3
Tim B
Tim B
Pertanyaan edit 12 November 2015 в 11:21
Pemrograman
datetime
symfony
doctrine-orm
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
 stwe
stwe
21 Mei 2012 в 2:34
2012-05-21T14:34:38+00:00
Lebih
Sumber
Sunting
#16237133

salah satu idenya adalah mengekstrak dari tanggal: tahun, bulan, dan hari. Dan kemudian

$qb->select('p')
   ->where('YEAR(p.postDate) = :year')
   ->andWhere('MONTH(p.postDate) = :month')
   ->andWhere('DAY(p.postDate) = :day');

$qb->setParameter('year', $year)
   ->setParameter('month', $month)
   ->setParameter('day', $day);

BULAN HARI, dan TAHUN Anda mengambil DoctrineExtensions dari

contoh

DoctrineExtensions

Ini bekerja untuk saya. Anda hanya membutuhkan berkas: day.php, month.php dan year.php.....

Anda mendapatkan bulan misalnya:

    $datetime = new \DateTime("now");
    $month = $datetime->format('m');
    echo $month;

Salin hari.php, bulan.php dan tahun.php ke bundel Anda Xy\TestBundle\Dql Daftarkan fungsi-fungsi baru di app\config.yml dengan

doctrine:

orm:
    auto_generate_proxy_classes: %kernel.debug%
    entity_managers:
        default:
            auto_mapping: true
            dql:
                datetime_functions:
                    month: Xy\TestBundle\Dql\Month
                    year: Xy\TestBundle\Dql\Year
                    day: Xy\TestBundle\Dql\Day
 stwe
stwe
Jawaban edit 21 Mei 2012 в 5:15
22
0
Pablo  Gonzalez Portela
Pablo Gonzalez Portela
9 Juli 2013 в 7:56
2013-07-09T19:56:32+00:00
Lebih
Sumber
Sunting
#16237134

Jarang sekali ORM yang sudah matang tidak menyediakan fungsi DATE. Namun, untuk mendapatkan tanggal dari bidang datetime, Anda dapat menerapkan fungsi SUBSTRING seperti ini:

SELECT SUBSTRING(i.dateTimeField,1,10) FROM tableName i

Semoga dapat membantu!

 sth
sth
Jawaban edit 9 Juli 2013 в 8:20
13
0
 Reuven
Reuven
21 Mei 2012 в 9:57
2012-05-21T09:57:55+00:00
Lebih
Sumber
Sunting
#16237132

Anda harus menambahkan parameter today pada kueri QueryBuilder Anda.

$today = new \DateTime();
$qb->setParameter('today', $today->format('Y-m-d'));

Dengan QueryBuilder, Anda dapat membandingkan tanggal dengan DateTime dengan format 'Y-m-d'

5
0
Related communities 1
Symfony Framework Indonesia
Symfony Framework Indonesia
644 pengguna
Group ini adalah tempat belajar, berdiskusi dan saling membantu bagi pengguna Framework Symfony, terutama versi 2 ke atas. Website: http://symfonyid.github.io/ Github Repository https://github.com/SymfonyId
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Daniel Gogov
Terdaftar 2 hari yang lalu
2
工藤 芳則
Terdaftar 1 minggu yang lalu
3
Ирина Беляева
Terdaftar 1 minggu yang lalu
4
Darya Arsenyeva
Terdaftar 2 minggu yang lalu
5
anyta nuam-nuam (LapuSiK)
Terdaftar 2 minggu yang lalu
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi