1

简而言之,当我使用 php activerecord 提取记录时,我想在继续之前检查它是否存在。必须有一种更简单的方法来做到这一点,因为每种情况似乎都不同,我实际上不确定它们中的任何一个是否正常工作。

例如:

$var = Model::find_by_pk("something");

if (!empty($var)) { ... //记录存在 }

这是否会捕获所有异常,或者如果记录对于单个记录拉取根本没有返回任何行?

然后我试过这个:

if (count($var->errors) == 0) { ... //记录存在 }

这似乎适用于结果集,但不适用于单条记录。我尝试引用不存在的对象时遇到异常。

我看到 Model::exists() 但这是否意味着我需要返回并更改我所有的 activerecord 调用?(http://www.phpactiverecord.org/docs/ActiveRecord/Model#methodexists)?

总而言之,检查 php.activerecord 结果是否有数据的简单方法(最好是通用和/或防弹)是什么?

4

1 回答 1

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
 }
于 2013-01-31T09:54:59.077 回答