检查记录集是否存在PHP活动记录

时间:2013-01-30 17:46:21

标签: php phpactiverecord

简而言之,当我使用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结果是否有数据的简单方法(最好是通用和/或防弹)是什么?

1 个答案:

答案 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
 }