简而言之,当我使用php activerecord拉取记录时,我想在前进之前检查它是否存在。必须有一种更简单的方法来实现这一点,因为每种情况似乎都不同,我实际上并不确定它们是否正常工作。
例如:
$var = Model::find_by_pk("something"); if (!empty($var)) { ... //record exists }
是否会捕获所有异常,或者如果记录单个记录拉不返回任何行?
然后我试过这个:
if (count($var->errors) == 0) { ... //records exist }
这似乎适用于结果集,但不是单个记录拉动。我尝试引用一个不存在的对象时遇到异常。
我看到Model :: exists()但这是否意味着我需要重新开始并更改所有的activerecord调用? (http://www.phpactiverecord.org/docs/ActiveRecord/Model#methodexists)?
总结一下,检查php.activerecord结果是否有数据的简单方法(最好是通用和/或防弹)是什么?
答案 0 :(得分:4)
这应该足够了
$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
}