2
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
                    )
             )
)

通过使用 cakephp,我调试了我的 find('all') 并返回了我上面的数组。我可以通过查找函数中的订单值对站点字段值进行排序,我如何也可以使用 SiteMeta 值进行排序

有任何想法吗?谢谢

4

3 回答 3

2

作为关联的一部分,我会在模型中执行此操作。

$hasMany = array('SiteMeta'=>array('order'=>array('SiteMeta.value'=>'asc')))

那时你就不必在任何地方重复自己了。

于 2013-08-20T15:02:11.190 回答
1

您可以使用具有如下订单条件的默认查询:

$result = $this->Site->find('all', array(
      'order'=>array('SiteMeta.value DESC' , 'Site.value DESC'),
      'recursive'=>1));

显然,您可以在数组中放置一个条件来检索您的正确结果

于 2013-08-20T11:02:44.607 回答
1

我会这样做(如Docs所示)

$result = $this->Site
  ->find()
  ->contain([
    'SiteMeta' => [
      'sort' => ['SiteMeta.pagerank' => 'ASC']
    ]
  ]);
于 2017-02-22T08:04:18.913 回答