[已解决]关联中的LIMIT

设置关联关系时:

Quote

'note' => array( self::HAS_MANY, 'Note', '_resource','order' => '??.createTime DESC', 'joinType'=>'LEFT JOIN', 'limit' => 2)

order, joinType都能够正确地应用到SQL上面, 但是limit却不能应用。

SQL语句如下:

Quote

SELECT `wine`.`id` AS t0_c0, t7.`id` AS t7_c0, t7.`_resource` AS t7_c1, t7.`_poster` AS t7_c2, t7.`content` AS t7_c3, t7.`createTime` AS t7_c4 FROM `wine` LEFT JOIN `note` t7 ON t7.`_resource`=`wine`.`id` WHERE `wine`.`id`='89919006-8435-6FC5-76C5-D878B3CE169B' ORDER BY t7.createTime DESC

麻烦强哥看一下我的问题是出在哪里了

因为这个是HAS_MANY关联,LIMIT只在lazy loading时才起作用。eager loading不能用LIMIT (你试试直接用SQL实现你就知道为什么了)。

谢谢强哥。

那除了循环wine的rowset把note的记录集附加上以外, 还有其他方法吗?

好了, 我已经做到了。

谢谢!

不在findall()时指定关联, 而直接去调用关联就可以了

用lazy loading方法你要注意性能,因为访问每条主记录的note都要执行一条SQL。

谢谢强哥提醒~

补一个问题:

我如何在relations()方法的外面来修改一条关联的信息呢?

比如我想给 

Quote

'note' => array( self::HAS_MANY,    'Note', '_resource','order' => '??.createTime DESC')

增加一个LIMIT = 2

增加一个condition可以吗?'codition'=>'limit=2'

Hi, sharehua

增加一个 'limit' => 2 也是可以的。 我想知道的是如何动态的把这个值加上

'codition'=>'limit=:limit' .

在调用的地方给limit参数赋值。可以参照blog例子里面post model里tag的做法。

你说的这种方式是适用于  eager loading 的时候吧。

我想了解的是 lazy loading的方式。

我们将在1.0.5里支持动态设置lazy loading的参数。