前提・実現したいこと
cakephp3にて以下のレコードを取得したいのですが、取得方法がわからず詰まっています。
大変初歩的な質問かもしれませんが、ご教授いただきたいです。
ログインしてるユーザーの投稿記事一覧をビューに表示させたいです。
①ユーザテーブル
UsersTable.id
②記事テーブル(タイトル、本文、投稿日時など)
PostsTable.users_id
ユーザーのidと記事のusers_idは紐づいており、
ログインしてるユーザーが投稿記事一覧ページに遷移する際、
ログインしてるユーザー本人だけの記事一覧を見れる機能としたいです。
ログインユーザーのidとusers_idが一致したときにPostsTableを取得したいイメージですが、実現するための方法がわかりません。何卒ご指導のほどお願いいたします。
public function view($id = null) { $query = TableRegistry::getTableLocator()->get('users'); foreach ($posts as $post) { $users = $query->find()->where(['id' => $post['users_id']]); foreach ($users as $user) { if ($user['id'] == $post['users_id']) { $this->set('posts', $posts); } } } }
「ログインユーザーのID」が取得できればあとはWhereかけるだけと思いますが、いま、どこまでできているのでしょう?
マニュアルに参考になるものはありませんでしたか?
お恥ずかしながら、cookbookやググった結果からイメージしかできていません。
UsersテーブルにhasMany定義はしております。
hasManyとwhere文、要素が組み合わさったとき詰まってしまい、現在に至ります。
質問は編集できます。
また提示の書き方ではteratailのマークダウンに準じてません。ヘルプをご確認ください。
あとコメント欄ではマークダウン使えません。
使用のアドバイスをありがとうございます!手直しいたしました。
「ログインユーザーの取り方が分からない」ということでしょうか?
そうですね。ログインユーザーをとり、ログインユーザーのidと一致するusers_idからPostsテーブルのデータを引っ張ってきてビュー表示させたいと考えております。
認証関係でしたら公式ドキュメントにしっかり書いてあるのでまずはそちらを参照されては?
あとはしぼり込みなのでこれもドキュメント参照でできそうに思います。
もう一点「CakePHPなどフレームワークでなければどう書いているか」を考えてみると良いです。