亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何限制每個記錄/組包含的關聯?

如何限制每個記錄/組包含的關聯?

森欄 2019-11-02 10:50:29
我有一個模型,文章,其中有很多摘要。我想加載10篇最新文章,對于每篇文章,要加載點數最多的摘要。我的函數如下所示:public function getArticles($category, $viewName) {            $subArticles = $this->Articles->findByCategory($category)->contain([                    'Abstracts' => function ($q) {                            return $q                                    ->select(['body', 'points', 'article_id'])                                    ->where(['Abstracts.approved' => true])                                    ->limit(10)                                    ->order(['Abstracts.points' => 'DESC']);                    }            ])            ->limit(10)            ->order(['Articles.created' => 'DESC']) ;            $this->set( $viewName . 'Articles', $subArticles );    }我得到的結果雖然不是我想要的。查看SQL,首先CakePHP獲取類別中所有內容的article.id(精細)。然后,CakePHP使用這10條文章進入摘要表。它剛找到了id,并要求獲得投票數最高的10條摘要(屬于那些文章)。問題是我希望每篇文章有1個摘要,而不是該類別中任何文章的10個摘要。我怎樣才能解決這個問題?謝謝!編輯ndm建議這與在包含的模型上使用limit()重復,因此我在那里嘗試了解決方案。即,我將其添加到我的模型中: $this->hasOne('TopAbstract', [            'className' => 'Abstracts',            'foreignKey' => 'abstract_id',            'strategy' => 'select',            'sort' => ['TopAbstract.points' => 'DESC'],            'conditions' => function ($e, $query) {            $query->limit(1);            return $e;    } ]);然后,我嘗試使用contain(['TopAbstract'])查找按類別分類的Articles,只有這樣才能殺死我的SQL。它死得很慘:Error: SQLSTATE[HY000]: General error: 1 near ")": syntax error調試甚至沒有顯示殺死它的查詢,因此我不確定如何調試該查詢?編輯跟自己說一點,但是錯誤肯定是在hasOne的“條件”部分中。我將其取出,效果很好。無法找到一個示例,說明應該如何在Internet上看。任何人有任何想法嗎?
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 433 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號