always getting error trying to elaborate sql query into cakephp; how to convert this one?

54 Views Asked by At

If I use the Following code in PHPMyAdmin (SQL) statement, it works and I get a list of all Birthdays of the following 31 days. Here is my code:

SELECT
    *
FROM
    membres 
WHERE
    DATE_ADD(
        date_de_naissance,
        INTERVAL
            YEAR(CURDATE()) -
            YEAR(date_de_naissance) +
            IF(DAYOFYEAR(CURDATE()) > DAYOFYEAR(date_de_naissance), 1, 0)
        YEAR
    )
    BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 31 DAY)
    AND
    (
        MONTH(date_de_naissance) <> MONTH(CURDATE())
        OR
        DAY(date_de_naissance) <> DAY(CURDATE())
    )

How would it be in Cakephp? Please help

1

There are 1 best solutions below

4
Greg Schmidt On

I generally find it's much easier to do the date math in CakePHP than in MySQLs, so I'd do something like this:

$birthday_members = $this->Membres->find()
    ->where([
        'date_de_naissance >' => Cake\I18n\FrozenDate::now(),
        'date_de_naissance <=' => Cake\I18n\FrozenDate::now()->addDays(31),
    ]);