Yii2.0 中,模型实例化方式有多种,如下:
1. $model = new VPost();
2. $model = VPost::findOne($id);
等价于
$customer = Customer::find()->where(['id' => 10])->one();
3. $model =$this->findModel($id);
protected function findModel($id)
{
if(($model = VPost::findOne($id)) != null){
return $model;
}else{
//抛出异常
throw new NotFoundHttpException("The requested page does not exist.");
}
}
//理解底层调用的findOne()静态方法
public static function findOne($condition)
{
return static::findByCondition($condition)->one();
}
对于实例化空模型,当然选择第一种方式。
第二种和第三种都是通过键(id)实例化一条模型数据,但推荐第三种,第三种方法能够对肯能存在的异常进行处理,对于代码鲁棒性来讲,是个不错的选择!