How to use MySQL functions in Propel

后端 未结 2 719
失恋的感觉
失恋的感觉 2021-01-13 07:56

I want to select records that are 1 month old or newer.

The query is: SELECT * FROM foobar WHERE created_at > DATE_SUB(curdate(), INTERVAL 1 MONTH)

Using Pro

相关标签:
2条回答
  • 2021-01-13 08:18

    just replace the mysql date code you are using there with a precalculated php variable that has that date in it already.

    i.e.

    $monthAgo = '2008-10-03';
    $c = new Criteria
    $c->add(FoobarPeer::CREATED_AT, $monthAgo, Criteria::GREATER_THAN); 
    

    obviously, you should dynamically calculate the date in php, rather than hard coding it, but you get the picture.

    0 讨论(0)
  • 2021-01-13 08:44

    I think there is no option more than using Criteria::CUSTOM or doing a custom SQL query like this:

    $con = Propel::getConnection(DATABASE_NAME);
    
    $sql = "SELECT foobar.* FROM foobar WHERE created_at > DATE_SUB(curdate(), INTERVAL 1 MONTH)";  
    $stmt = $con->prepare($sql);
    $stmt->execute();
    
    $books = FoobarPeer::populateObjects($stmt);
    

    That's because Propel tries to be DBMS-agnostic, to help migration by doing a simple configuration value change, so it doesn't have any DBMS specific functions built in.

    0 讨论(0)
提交回复
热议问题