yii:限制一个has_many的关系



简单的故事。我有用户和博客库,用户与博客库相关,将其作为一对下。我想向用户展示他们的个人资料以及他们写的5个最新帖子:

/**
     * @return array relational rules.
     */
    public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'posts' => array(self::HAS_MANY, 'BlogPost', 'userId')
        );
    }

我正在尝试应用限制:

$user = User::model()->with(array(
            'posts' => array('order' => 'updatedAt DESC'),
            ->findAll(array(
                'condition' => 'userId = :userId AND ...',
                'params' => array(
                    'userId' => $userId
                ),
                'limit' => 5
            ));

但是YII框架忽略了这一点。我该如何完成?

是yii 1.1。

您必须在 with中包括限制:

$user = User::model()
    ->with(array(
        'posts' => array(
            'order' => 'updatedAt DESC',
            'limit' => 5
        )
    ))->findAll(array(
        'condition' => 'userId = :userId AND ...',
        'params' => array(
            'userId' => $userId
        ),
    ));

关系()函数应该看起来像这样:

return array(
  'posts' => array(self::HAS_MANY, 'BlogPost', 'userId'),
  'recentPosts' => array(self::HAS_MANY, 'BlogPost', 'userId',
    'order' => 'updatedAt DESC',
    'limit' => 5
  )
);

呼叫$user->posts您将获得所有帖子,呼叫$user->recentPosts只能获得最后5个。

相关内容

最新更新