【发布时间】:2013-12-03 06:46:22
【问题描述】:
当我们每次都要进行关系查询时,将 yii 模型与关系一起使用是个好主意吗??
例如我有这些表:
- 用户
- 文章
- 文章投票
- 类别
用户链接到文章和文章投票
文章和文章投票是相关联的
并且类别和文章是链接的...
所以现在为了获取这些数据,我创建了一个函数,它将返回一个包含这些相关表数据的数组
function getArticles($limit)
{
$criteria = new CDbCriteria();
$criteria->limit = $limit;
$articles = Article::model()->with('idCategory', 'idUser', 'idArticleVotes')->findAll($criteria);
return array(
'category' => $articles->idCategory, // object of type category
'articles' => $articles, //object of type article
'votes' => $articles->idArticleVotes, //object of type ArticleVotes which has other object of type users
'user' => $articles->idUser, //object of type user
);
}
上面这段代码是使用 yii 的好方法吗?特别是如果我有很多数据要从数据库中检索???
执行会不会很慢???
【问题讨论】:
-
我注意到您返回的是表“文章”的实际列值,而不是与上面的代码一样的“类型对象”。您是否在 Article 模型中声明了关系并定义了键?
-
不,它不是列,它的关系很好 iuts 不是复制和粘贴我刚刚写了这段代码,我知道它应该是 idUser0 或 idCategory0 像 yii 为你生成它...
-
避免在一个查询中加载多个一对多关系。这样做会导致返回 大量 行。查看this question 的解决方案。