【问题标题】:Propel: Class 'Criteria' not found推进:未找到“标准”类
【发布时间】:2020-10-29 23:03:59
【问题描述】:

我目前正在了解 Propel,但我很难让它发挥作用。
为了提供一些背景知识,我想使用 Propel 获取表“消息”的最后一行。为了实现这一点,我想使用“标准”类。
我的问题是执行程序时 PHP 找不到类 Criteria。我知道我必须以某种方式导入该类,但我不知道它在哪里。这是我的代码:

<?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();
?>

我已经使用 composer 安装了 Propel。
这是它可能关注的错误消息(不要介意第 17 行,我已经缩短了代码):

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

请帮帮我,我拒绝在这个问题解决之前上床睡觉。

更新:
我确实去睡觉了。
首先,PetrHejda 的解决方案有效,但我也找到了另一种方法来解决我的具体问题:
而不是使用orderById(\Propel\Runtime\ActiveQuery\Criteria::DESC)-&gt;(就像在Petr 的解决方案中一样),可以只说orderById('desc')-&gt;,它也可以正常工作。感谢您的帮助!

【问题讨论】:

  • 我怀疑 Criteria 在这种情况下是否会位于根命名空间中。因此,您缺少 use 语句,或者您需要将完全限定的命名空间添加到 Criteria 类名。你用的是哪个版本的推进器?

标签: php propel


【解决方案1】:

Propel 的类 Criteria 在命名空间 \Propel\Runtime\ActiveQuery 中。

在类名前面加上命名空间

orderById(\Propel\Runtime\ActiveQuery\Criteria::DESC)

或者导入

use Propel\Runtime\ActiveQuery\Criteria;

orderById(Criteria::DESC)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-31
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    相关资源
    最近更新 更多