【问题标题】:Kohana 3.2 ORM Check the existence of a single recordKohana 3.2 ORM 检查单条记录是否存在
【发布时间】:2012-07-08 15:29:49
【问题描述】:

我在尝试找出检查特定结果是否包含以下代码的任何记录的最佳方法时遇到了一些麻烦:

 $record = ORM::factory('my_table', $id);

我通常会使用一个计数器方法,如 $record->count() 或 $records->exist() 方法,如果找到任何东西,它只会返回 true 或 false。但是没有为 ORM 实现这样的事情。

我知道 kohana ORMs 实现了 SPL 可计数接口,因此我可以使用 php count() 函数,但是当只需要一条记录时,这真的没有用,因为 count() 将为任何不包含数据的模型返回 1,例如,如果找不到 id。

这就是我绕过它的方式:

try {
 $record = ORM::factory('my_table', $id);

 if($record->id === NULL) {
   throw new Exception('The id: ' . $id . ' was not found, use a valid ID');
 }

}

这个特定的解决方案不是很好,如果我的表不包含 id 字段或者表允许 ID 为空怎么办?

必须有更好的方法来检查模型是否包含任何数据。

有什么想法吗?

【问题讨论】:

    标签: php count exists kohana-orm kohana-3.2


    【解决方案1】:
    try 
    {
        $record = ORM::factory('my_table', $id);
    
        if ( ! $record->loaded()) 
        {
            throw new Exception('The id: ' . $id . ' was not found, use a valid ID');
        }
    }
    

    http://kohanaframework.org/3.2/guide/api/ORM#loaded

    【讨论】:

    • 可悲的是,该方法目前没有记录到它的作用......谢谢!
    • Kohana 缺乏文档是其最大的缺点。谁在乎方法的源代码是什么,只要给我们一个体面的函数描述,并给我们展示一个如何使用它的例子。如果我还没有深入到我的项目中,我会切换框架。
    【解决方案2】:
    $record = ORM::factory('my_table', $id);
    
    if ($record->loaded())
    {
        // Load was successful
    }
    else
    {
        // Error
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      相关资源
      最近更新 更多