Yii DAO实现。
创建扩展CModel一个新的模型类。
正常情况下创建规则方法。
然后,您可以做
$model = new MyModel();
$model->myAttribute = 'value';
if ($model->validate())
{
Yii::app()->db->createCommand()
->update(
'MyTable',
array('myAttribute' => $model->myAttribute),
'key=:id',
array(':id' => 'key')
);
}
但是这并不能击败性能调整的目的吗? yii的权威指南“虽然Active Record擅长以OOP方式对数据进行建模,但实际上它会降低性能,因为它需要创建一个或多个对象来表示每行查询结果。”然而,在我应用程序我必须一次查询单个用户的记录,记录被分成9个表格左右。所以我会声明很多模型实例。如果我使用模型实例进行验证,为什么不保存呢? – 2012-08-14 21:24:01
我的示例不使用活动记录。它使用具有您要求的验证功能的CModel类。 – Alex 2012-08-16 06:42:35
因此,您的MyModel()类的声明扩展CModel而不是CActiveRecord?除了使用createCommand保存它之外,这里的用法与AR看起来没有什么不同?那么AR如何不同呢? – 2012-08-16 07:07:29
是的,你可以使用没有问题。
这里有一些链接,可以帮助你:
你能引导我到一个示例/文档?我使用了AR实例的验证规则,但从未使用过DAO。谢谢 !! – 2012-08-14 12:40:12
发布您的代码,以便我们可以帮助您。 – FabianoLothor 2012-08-14 12:51:37
好吧,在我开始使用实际编码之前,我只是在制定策略。我阅读了关于yii的权威指南,对于数据密集型应用,应该避免由于性能问题引起的AR。因为我几乎是一个业余与yii我想确保我可以做必要的验证,如果我从AR转移到DAO,而不是自己设置验证条件太多。我真的不知道如何验证使用规则分开来自AR。 – 2012-08-14 13:02:12
是的,你可以.... – NewUser 2012-08-14 12:35:30