2012-07-09 62 views
2

我有一点试图找出最好的方式来检查,如果一个特定的结果中包含任何记录下面的代码麻烦单个记录的存在:Kohana的ORM 3.2检查

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

什么我通常会做的是使用计数器方法,如$ record-> count()或$ records-> exist()方法,只要返回true或false,如果发现任何内容。但是没有为ORM实现这样的事情。

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

这是我周围得到的方式:如果我的表不包含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为空?

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

任何想法?

回答

3
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

+0

可悲的是,这种方法目前不只要它做什么...谢谢你记录! – Onema 2012-07-10 23:15:45

+3

Kohana缺乏文档是其最大的缺陷。谁在关心该方法的源代码,只是给我们一个体面的功能描述,并向我们展示了如何使用它的一个例子。如果我已经没有进入我的项目,我会改变框架。 – Gavin 2013-08-20 14:28:03

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

if ($record->loaded()) 
{ 
    // Load was successful 
} 
else 
{ 
    // Error 
}