几个月来,我一直忙于PH的PHP框架,我确实热爱这一框架。 此时,我就开展了一个非常新的项目,它的工作就像它应该做的那样(我认为......),但我感到不舒服的是我写的一些法典。 事实上,我应该优化我的原始条件,以便我立即获得正确的结果(现在我操纵了一套一套一套办法的星座确定的结果:即敲碎打。
我勾画了申请的相关方面。 我有一个模式站点,与示范站点Meta有管理关系。 上表如下所示:id,site_id, key, Value, 创造。
在最后一种模式中,我在不同时期记录了该网站的若干价值。 我想要储存的关键名称(如弹性体、角逐页......),当然还有价值。 在一定间隔期间,我可以评估这一数据库的更新情况,以便我能够跟踪这些价值观的演变情况。
现在我的问题是这个问题。
各个网站的总页(控制器=>站点,行动=>指数) 我愿在网站的网页上播放。 因此,我需要一个确切的SpotMeta记录,即所创造的领域是最高的,关键值应与页数相匹配。 我曾尝试过我所阅读的几件内容,但没有一件工作(可控制、约束性等)。 也许我会做一些错误的事情。
现在,当我花一美元,就象这样取得了成果。
Array
(
[0] => Array
(
[Site] => Array
(
[id] => 1
[parent_id] => 0
[title] => test
[url] => http://www.test.com
[slug] => www_test_com
[keywords] => cpc,seo
[language_id] => 1
)
[SiteMeta] => Array
(
[0] => Array
(
[id] => 1
[site_id] => 1
[key] => pagerank
[value] => 5
[created] => 2010-08-03 00:00:00
)
[1] => Array
(
[id] => 2
[site_id] => 1
[key] => pagerank
[value] => 2
[created] => 2010-08-17 00:00:00
)
[2] => Array
(
[id] => 5
[site_id] => 1
[key] => alexa
[value] => 1900000
[created] => 2010-08-10 17:39:06
)
)
)
仅通过所有地点进入第一页,并操纵这个阵列。 下一步 我用《一套办法》过滤结果:摘录。 但是,这并不意味着:
$sitesToCheck = $this->paginate($this->_searchConditions($this->params));
foreach($sitesToCheck as $site) {
$pagerank = $this->_getPageRank($site[ Site ]);
$alexa = $this->_getAlexa($site[ Site ]);
$site[ Site ][ pagerank ] = $pagerank;
$sites[] = $site;
}
if (isset($this->params[ named ][ gpr ]) && $this->params[ named ][ gpr ]) {
$rank = explode( - , $this->params[ named ][ gpr ]);
$min = $rank[0];$max = $rank[1];
$sites = Set::extract( /Site[pagerank<= . $max . ][pagerank>= . $min . ] , $sites);
}
$this->set(compact( sites , direction ));
请帮助我思考如何解决这一问题? 提前感谢。
感谢捐款。 我尝试了这些选择(也是有约束性的,但没有工作),但是仍然能够照样工作。 如果我这样说的话,
$this->paginate = array(
joins => array(
array(
table => site_metas ,
alias => SiteMeta ,
type => inner ,
conditions =>array( Site.id = SiteMeta.site_id )
)
),
);
I get duplicate results I have a site with 3 different SiteMeta records and a site with 2 different record. The paginate method returns me 5 records in total. There s probably an easy solution for this, but I can t figure it out :)
我也试图自己写一个 s子,但似乎我无法在该案中使用想象力。 下面是我喜欢用想象力的选择和条件。 我完全要问答。
$sites = $this->Site->query( SELECT * FROM sites Site, site_metas SiteMeta WHERE SiteMeta.id = (select SiteMeta.id from site_metas SiteMeta WHERE Site.id = SiteMeta.site_id AND SiteMeta.key = pagerank order by created desc limit 0,1 ) );