【问题标题】:PHP: Fatal error: Uncaught exception 'ActiveRecord\RecordNotFound'PHP:致命错误:未捕获的异常“ActiveRecord\RecordNotFound”
【发布时间】:2023-03-18 07:54:02
【问题描述】:

我正在尝试活动记录。我相信这是一个很棒的 ORM,但是我无法让它运行。

有些方法有效,但有些无效 例如

<?php
$user=new user();
foreach(user::find('all') AS $row) {
  echo "$row->username <br>"; //this works fine. 
}

但是,当提供选项或使用 validates_uniqueness_of 时,会引发异常:

foreach (user::find('all','order'=>"created DESC ,'limit'=>10")) {
  echo "$row->username <br>";

这会导致

Fatal error: Uncaught exception 'ActiveRecord\RecordNotFound' 

...带有消息...

Couldn't find all user with IDs (all,created DESC ,'limit'=>10) (found 0, but was looking for 2)

我正在使用 php 5.3.4 并使用夜间构建(2013 年 5 月 8 日) 请告知如何解决此问题。

/*------------------------edit : full code----------------*/

$path_to_AR = "AR/";
include $path_to_AR . "activerecord.php";
ActiveRecord\Config::initialize(function($cfg) {
    $cfg->set_model_directory('model');
    $cfg->set_connections(
                    array(
                     'development' => 'mysql://root:asdf@localhost/test_ar',
                     'test' => 'mysql://username:password@localhost/test_database_name',
                     'production' => 'mysql://username:password@localhost/production_database_name'
                    )
            );
        });   

$user = new user(); //class user extends ActiveRecord\Model {}

foreach (user::find(array('all','conditions'=>"username LIKE '%ohn%'")) AS $row) {
    echo "Username:$row->username<br>";
}

【问题讨论】:

    标签: php phpactiverecord uncaught-exception


    【解决方案1】:

    问题在于您以错误的方式调用方法。

    第一个参数表示一种搜索类型,应该是一个字符串(但您实际上可以使用快捷方式:User::all() 而不是User::find('all')),但第二个参数应该是一个数组。所以应该这样写:

    user::find('all', array('order' => 'created DESC', 'limit' => 10));
    

    ...或者只是...

    user::all(array('order' => 'created DESC', 'limit' => 10));
    

    我的猜测(因为您仍然没有提供整个代码)是您实际上将 所有 find 的参数包装到一个数组中。并且此方法已调整,因此在这种情况下,它会尝试将此数组的值用作要在表查找中使用的 ID。

    这些 ID 的数量是 2,因此它预计会找到 2 个项目 - 但显然找不到任何项目;因此是一个例外。 Ruby-On-Rails 实现使用了相同的方法;检查this discussion 是否有类似的错误(以及原因)。

    查看文档以获取有关如何使用 PHPActiveRecord 的 finder methods 的更多详细信息。

    【讨论】:

    • 非常感谢@raina77ow 这确实是问题所在。 :)
    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 2014-08-26
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多