简而言之,当我使用 php activerecord 拉取记录时,我想在继续之前检查它是否存在。 必须有一种更简单的方法可以做到这一点,因为每种情况似乎都不同,而且我实际上不确定它们中的任何一种是否正常工作。
例如:
$var = 模型::find_by_pk("某物");if (!empty($var)) { ...//record exists }
这会捕获所有异常,还是记录根本不返回单个记录提取的行?
然后我试过这个:
if (count($var->errors) == 0) { ...//records exists }
这似乎适用于结果集,但不适用于单个记录拉取。我收到尝试引用不存在的对象的异常。
我看到了 Model::exists(),但这是否意味着我需要返回并更改我所有的活动记录调用?(http://www.phpactiverecord.org/docs/ActiveRecord/Model#methodexists)?
总而言之,检查php.activerecord结果是否有数据的简单方法(最好是通用和/或防弹)是什么?
应该
足够了
$var = Model::find_by_pk("something");
if($var){
//winning
}else{
//not found
}
你不能做if (count($var->errors) == 0)
的原因是,当你没有被击中时,$var
不是一个对象,所以你不能检查它的errors
。
请注意,如果您这样做find
如果它不存在,您将获得异常,而不仅仅是没有结果:
try{
$var = Model::find($id);
}catch ('Exception $e){
//not found
}