我在试图找出检查特定结果是否包含以下代码的任何记录的最佳方法时遇到了一些麻烦:
$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为null怎么办?
必须有更好的方法来检查模型是否包含任何数据。
有什么想法吗?
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
$record = ORM::factory('my_table', $id);
if ($record->loaded())
{
// Load was successful
}
else
{
// Error
}