我在尝试找出检查特定结果是否包含以下代码的任何记录的最佳方法时遇到了一些麻烦:
$record = ORM::factory('my_table', $id);
我通常会使用计数器方法,例如 $record->count() 或 $records->exist() 方法,如果发现任何内容,它只会返回 true 或 false。但是 ORM 还没有实现这样的东西。
我知道 kohana ORM 实现了 SPL 可计数接口(interface),因此我可以使用 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 为空怎么办?
必须有更好的方法来检查模型是否包含任何数据。
有什么想法吗?
最佳答案
try
{
$record = ORM::factory('my_table', $id);
if ( ! $record->loaded())
{
throw new Exception('The id: ' . $id . ' was not found, use a valid ID');
}
}
关于php - Kohana 3.2 ORM 检查单个记录是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11391565/