roger
(Roger Happy8)
April 5, 2009, 12:17am
1
设置关联关系时:
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
麻烦强哥看一下我的问题是出在哪里了
qiang
(Qiang Xue)
April 5, 2009, 12:45am
2
因为这个是HAS_MANY关联,LIMIT只在lazy loading时才起作用。eager loading不能用LIMIT (你试试直接用SQL实现你就知道为什么了)。
roger
(Roger Happy8)
April 5, 2009, 1:08am
3
谢谢强哥。
那除了循环wine的rowset把note的记录集附加上以外, 还有其他方法吗?
roger
(Roger Happy8)
April 5, 2009, 1:11am
4
好了, 我已经做到了。
谢谢!
不在findall()时指定关联, 而直接去调用关联就可以了
qiang
(Qiang Xue)
April 5, 2009, 1:23am
5
用lazy loading方法你要注意性能,因为访问每条主记录的note都要执行一条SQL。
roger
(Roger Happy8)
April 5, 2009, 2:05pm
7
补一个问题:
我如何在relations()方法的外面来修改一条关联的信息呢?
比如我想给
Quote
'note' => array( self::HAS_MANY, 'Note', '_resource','order' => '??.createTime DESC')
增加一个LIMIT = 2
sharehua
(8080268)
April 6, 2009, 12:07am
8
增加一个condition可以吗?'codition'=>'limit=2'
roger
(Roger Happy8)
April 6, 2009, 1:44am
9
Hi, sharehua
增加一个 'limit' => 2 也是可以的。 我想知道的是如何动态的把这个值加上
sharehua
(8080268)
April 6, 2009, 2:25am
10
'codition'=>'limit=:limit' .
在调用的地方给limit参数赋值。可以参照blog例子里面post model里tag的做法。
roger
(Roger Happy8)
April 6, 2009, 2:31am
11
你说的这种方式是适用于 eager loading 的时候吧。
我想了解的是 lazy loading的方式。
qiang
(Qiang Xue)
April 6, 2009, 12:28pm
12
我们将在1.0.5里支持动态设置lazy loading的参数。