Php 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

我正在开发我的第一个YII网站。我对YII数据库有一些疑问

在yii中查询数据库有三种方法

  • 数据库访问对象
  • 查询生成器
  • 活动记录

  • 在这三种方法中,哪一种是安全且最受欢迎的方法
  • 如果要执行自定义查询,我应该选择哪种方法
  • 在查询生成器查询的情况下,我们显式地选择

        $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();
    
    那么我应该在哪里编写查询生成器查询呢?如果我在相应的表模型中编写它们,有什么好处吗

  • 如果我使用DAO或查询生成器,什么类应该扩展我的模型

  • 如果遵循DAO方法或查询生成器方法,如何验证用户输入

  • 视情况而定。如果您知道如何安全地使用它们,那么所有这些都是同等安全的

  • 刀。这是我的意见

  • 在模型中

  • Yii中有两个主要的模型类
    CFormModel
    CModel
    。对于查询,请根据CModel扩展该类

  • 只是结尾的一张便条。刀是其中最快的。活动记录是最慢的。另一方面,活动记录更方便。你是需要决定平衡点的人

  • 视情况而定。如果您知道如何安全地使用它们,那么所有这些都是同等安全的

  • 刀。这是我的意见

  • 在模型中

  • Yii中有两个主要的模型类
    CFormModel
    CModel
    。对于查询,请根据CModel扩展该类


  • 只是结尾的一张便条。刀是其中最快的。活动记录是最慢的。另一方面,活动记录更方便。您是需要决定平衡点的人。

    您可以用于所有需求。

    您可以用于所有需求。

    为什么我们要在模型中编写查询生成器查询(表名在查询中指定)?反正我不使用查询生成器。但问题是,如果不在模型中,您想在哪里写入?为什么不在控制器中写入?不,因为数据库查询不是业务逻辑。如果你愿意,当然可以。所以如果我使用查询生成器或DAO方法,我可以在任何独立于表的模型中编写查询,不是吗?(因为表名是在查询本身中指定的)为什么我们要在模型中编写查询生成器查询(表名是在查询本身中指定的)?反正我不使用查询生成器。但问题是,如果不在模型中,您想在哪里写入?为什么不在控制器中写入?不,因为数据库查询不是业务逻辑。如果您愿意,当然可以。因此,如果我使用查询生成器或DAO方法,我可以在任何独立于表的模型中编写查询,不是吗?(因为表名是在查询本身中指定的)