Php YII中的数据库方法
我正在开发我的第一个YII网站。我对YII数据库有一些疑问 在yii中查询数据库有三种方法Php YII中的数据库方法,php,activerecord,yii,dao,query-builder,Php,Activerecord,Yii,Dao,Query Builder,我正在开发我的第一个YII网站。我对YII数据库有一些疑问 在yii中查询数据库有三种方法 数据库访问对象 查询生成器 活动记录 在这三种方法中,哪一种是安全且最受欢迎的方法 如果要执行自定义查询,我应该选择哪种方法 在查询生成器查询的情况下,我们显式地选择 $user = Yii::app()->db->createCommand() ->select('id, username, profile') ->from('tbl
- 数据库访问对象
- 查询生成器
- 活动记录
$user = Yii::app()->db->createCommand()
->select('id, username, profile')
->from('tbl_user') // explicitly choosing the table
->join('tbl_profile p', 'u.id=p.user_id')
->where('id=:id', array(':id'=>$id))
->queryRow();
那么我应该在哪里编写查询生成器查询呢?如果我在相应的表模型中编写它们,有什么好处吗CFormModel
和CModel
。对于查询,请根据CModel扩展该类CFormModel
和CModel
。对于查询,请根据CModel扩展该类只是结尾的一张便条。刀是其中最快的。活动记录是最慢的。另一方面,活动记录更方便。您是需要决定平衡点的人。您可以用于所有需求。您可以用于所有需求。为什么我们要在模型中编写查询生成器查询(表名在查询中指定)?反正我不使用查询生成器。但问题是,如果不在模型中,您想在哪里写入?为什么不在控制器中写入?不,因为数据库查询不是业务逻辑。如果你愿意,当然可以。所以如果我使用查询生成器或DAO方法,我可以在任何独立于表的模型中编写查询,不是吗?(因为表名是在查询本身中指定的)为什么我们要在模型中编写查询生成器查询(表名是在查询本身中指定的)?反正我不使用查询生成器。但问题是,如果不在模型中,您想在哪里写入?为什么不在控制器中写入?不,因为数据库查询不是业务逻辑。如果您愿意,当然可以。因此,如果我使用查询生成器或DAO方法,我可以在任何独立于表的模型中编写查询,不是吗?(因为表名是在查询本身中指定的)