我正在处理具有数百个字段的表,我需要一种方法让yii只使用一部分字段(读取和写入)。有没有办法在CActiveRecord类中这样做?
答案 0 :(得分:4)
表中有数百个字段并不是更好。
无论如何阅读& Yii可以写字段子集。
我可以用CDbCriteria
显示它。
$criteria = new CDbCriteria;
$criteria->select = 'field1, field2'; // specify fields you want to read
写作时你必须聪明你将在什么时候写的字段。
可以使用rules
中的model
完成此操作。
定义规则的scenario
&要对特定操作执行的正确验证。
在调用$model->save()
方法之前设置scenarion。
// Set scenarion
$model->setScenario('mystep1');
将scenario
应用于模型规则。
// You rule in model
array('email','email','on'=>'mystep1')
同样将safe
规则应用于您要执行更新操作的字段。
array('email, id, name','safe')
安全规则也适用于场景;
注意:强> 使用方案,您可以保存或更新表的特定字段,但您必须指定表的列默认为NULL。
答案 1 :(得分:2)
查看CActiveRecord
的{{3}}功能。它允许您指定添加到所有SELECT
个查询的条件。
你会覆盖这样的函数:
public function defaultScope() {
// by default only select records with type = 1
return array(
'condition' => 'type = 1',
);
}
电文读出:
答案 2 :(得分:1)
根据这个问题:Calling a database view in Yii using Active Record您可以使用数据库查看,仅根据您需要的列生成模型。
然后你必须通过这个视图找到一种方法写(插入和更新)&我相信有多种方法可以确保这一点。