I'm currently getting to know Propel, but I'm having a hard time getting this to work.
To give a bit of background I want to get the last row of my table 'Message' using Propel. To archieve this I want to use the class 'Criteria'.
My problem is that PHP cannot find the class Criteria when I the programm is executed. I know I have to import the class somehow but I don't know where it is located. Here's my Code:
<?php
session_start();
// setup the autoloading
require_once '/home/smalburg/propel/vendor/autoload.php';
// setup Propel
require_once '/home/smalburg/propel/generated-conf/config.php';
//Get id from last row in table
$row = MessageQuery::create()->
orderById(Criteria::DESC)->
limit(1)->
find();
?>
I have installed Propel using composer.
Here's the error message to whom it may concern (don't mind Line 17 i have shortend the code):
Fatal error: Uncaught Error: Class 'Criteria' not found in /var/www/html/propel/nachrichten_schicken.php:17 Stack trace: #0 {main} thrown in /var/www/html/propel/nachrichten_schicken.php on line 17
Please help me I refuse to go to bed before this is fixed.
Update:
I did go to bed.
First of all, PetrHejda's solution worked, but I also found an alternative way to solve my specific problem:
Instead of using orderById(\Propel\Runtime\ActiveQuery\Criteria::DESC)->
(like in Petr's solution) one can just say orderById('desc')->
, which also worked fine. Thanks for the help!
Propel's class Criteria
is in the namespace \Propel\Runtime\ActiveQuery
.
Either prepend the namespace to the class name
orderById(\Propel\Runtime\ActiveQuery\Criteria::DESC)
or import it
use Propel\Runtime\ActiveQuery\Criteria;
orderById(Criteria::DESC)