2

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

 $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 为空怎么办?

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

有任何想法吗?

4

2 回答 2

4
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

于 2012-07-09T09:55:54.720 回答
3
$record = ORM::factory('my_table', $id);

if ($record->loaded())
{
    // Load was successful
}
else
{
    // Error
}
于 2012-07-09T09:57:03.130 回答