前提
初学者です。よろしくお願いします。
以下の環境でシステムを実装しています。
cakephp: 3.8.2
mysql: 8.0.18
実現したいこと
多対多でリレーションを紐づけている以下のテーブルがあります。
指定する各タグ毎に新しい順の記事を5件ずつ取得したいです。
## 記事テーブル CREATE TABLE `articles` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `text` text NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`) ) ## タグテーブル CREATE TABLE `tags` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`) ) ## 中間テーブル CREATE TABLE `articles_tags` ( `id` int(11) NOT NULL AUTO_INCREMENT, `article_id` int(11) NOT NULL, `tags_id` int(11) NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`) )
試した事
指定するタグ毎に、日時とidを降順にソートした記事を取得する所まではできたのですが、タグ毎に取得した記事に対してlimitで取得件数の制限を付けるやり方が分からない状況です。
$this->tags->find() ->contain([ 'Articles' => function ($q) { return $q->orderDesc('Articles.created', 'Articles.id'); } ]) //タグを指定 ->where(['tags.id IN' => [3, 6, 10]]);
以上です。ご助力やアドバイス等頂けると幸いです。
宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。