【发布时间】:2013-06-06 15:46:45
【问题描述】:
假设我们有三个表,帖子、用户和图像。其中帖子与用户表有关系,图片与用户表有关系,因此帖子属于用户,图片属于用户。
Post {
post_id
user_id
}
Users {
user_id
}
Images {
image_id
user_id
}
现在在 Yii 中,可以在模型中定义关系。我的关系是这样设置的:
<?php
class Users extends CModel {
public function relations() {
'images' => array(self::HAS_ONE, 'Images', 'user_id')
'posts' => array(self::HAS_MANY, 'Posts', 'user_id')
}
}
class Images extends CModel {
public function relations() {
'user' => array(self::HAS_ONE, 'Users', 'user_id')
}
}
class Posts extends CModel {
public function relations() {
'user' => array(self::HAS_ONE, 'Users', 'user_id')
}
}
现在在 Yii 中,使用 DBCriteria 我可以使用带有“with”功能的 CDbCriteria 来查询这个。我的问题是如何查询 Post 模型,并使用 Users 模型内部的关系来获取用户图像?
例子:
CActiveDataProvider('Posts', array(
'criteria'=>array(
'with' => array('users', 'Users.images'),
),
'pagination'=>array(
'pageSize'=>20,
),
));
有没有办法在 Yii 中实现这一点?
【问题讨论】:
-
我认为,您发布的代码将不起作用。
Posts和Images中的user关系必须是BELONGS_TO。 -
当然,我模拟了这个例子,但这个想法在另一个模型上的连接上保持不变
-
嗯,它确实有所作为。如果它真的是
HAS_ONE,您可以使用through功能。但它不适用于BELONGS_TO。
标签: php frameworks yii