如何使用findAllByPk()读取数组中具有id的行


How to read rows with IDs in array with findAllByPk()

我有一个保存相关帖子id的表。

$criteria = new CDbCriteria;
$criteria -> select = 'content_2';
$criteria -> condition = 'content_1=:c';
$criteria -> limit = $count;
$criteria -> params = array(':c' => $id);
$posts_id = SiteContentRelated::model() -> findAll($criteria);
$ids = array();
foreach ($posts_id as $value) {
    $ids[] = intval($value['content_2']);
}
$posts = SiteContent::model()->findAllByPk($ids);
echo '<pre style="direction:ltr;">';
print_r(count($posts));
echo "</pre>";
die();

和结果:

1

和我确定的行数表(3行)。我错在哪里?

因为我们不知道你的数据集,你应该先试着调试这个:

比较:

count(SiteContent::model()->findAll())

count(SiteContent::model()->findAllByPk($ids))

如果结果不一样,你的查询不是你想要它做的。如果两者都不正确,说明你没有正确的数据集。

第二个注意事项,应该使用var_dump而不是print_r进行调试。Print_r将显示布尔值为1或0,而不是它们的实际值