怎样设定关联表默认取得数据的条数

大家好,问题为:

有两个表author和posts,author HAS_MANY 关联到posts;posts BELONGS_TO关联到 author表。

采用eager loading方式取得数据:




$res = author::model()->with(array('posts'=>array('limit'=>2)))->findByPk($author_id);



但是返回的作者的文章信息并不是设定的2条,而是全部,请问怎样才能设置关联表取得数据的数目。

‘limit’=>2 这里的限度,是限定了author 吧?

感谢你的回复,我需要做到的是让author记录所对应的两条posts记录,可是最后取得的结果确实author记录对应的所有posts记录。我应当怎样写才能限定关联表posts的记录数目呢?

$res = author::model()->with(array(‘posts’=>array(‘conditon’=>array(‘lt’=>2))))->findByPk($author_id);

看看这个是否可以?

刚才试了下,不行。

老大,如果你要实现这个,你会怎么做?如果不能这样解决这个问题,这个地方的关联操作可能带来的结果是浪费很多资源,因为我们不可能通过关联来取得关联表中的所有数据。

有一个办法倒能解决,但这个办法效率不高,并且让AR的关联失去意义。




$res = author::model()->findByPk($author_id);

$posts = posts::model()->findAll(array('idauthor'=>$res->id,'limit'=>2));



所以,大家,你们是用什么办法怎么限定关联表数据数目的,敬请指教一二。

还是动态获取吧

$author=author::model()->findByPk();

$posts=$author->posts(array(‘limit’=>2));

前提是HAS_MANY要事先设定好。