我在尝试找出检查特定结果是否包含以下代码的任何记录的最佳方法时遇到了一些麻烦:
$record = ORM::factory('my_table', $id);
我通常会使用像$ record-> count()或$ records-> exist()方法之类的计数器方法,只要找到任何内容就会返回true或false。但是ORM没有实现这样的东西。
我知道kohana ORM实现了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怎么办?
必须有更好的方法来检查模型是否包含任何数据。
有什么想法吗?
答案 0 :(得分:4)
try
{
$record = ORM::factory('my_table', $id);
if ( ! $record->loaded())
{
throw new Exception('The id: ' . $id . ' was not found, use a valid ID');
}
}
答案 1 :(得分:3)
$record = ORM::factory('my_table', $id);
if ($record->loaded())
{
// Load was successful
}
else
{
// Error
}