こんにちは。
教えてください。laravel8(PHP7.4.20)を使用しています。
ユーザが投稿したデータをpostテーブルに保存しており、
①の処理で投稿したデータを取得することはできました。
ここから、投稿したユーザの名前を取得したいのですが、
where句にどのように指定すれば良いのかがわかりません。
①最新の投稿10件を取得
Laravel
1$recent_posts = Post::where('grand_status', 1)->orderBy('id', 'DESC')->limit(10)->with('user')->has('user')->get();
② ①で取得した10件の投稿に対して、投稿したユーザ名を取得したいです
Laravel
1 2→これだとUserテーブル全件取得できた 3$users = User::orderBy('id', 'DESC')->get(); 4 5→これだとUserテーブルのid=3のユーザのデータが取得できた 6$users = User::where('id', 3)->orderBy('id', 'DESC')->get(); 7 8→なので、引数に①で取得したデータからidを抜き出せば良いかと考えたのですがエラーになりました。 9$users = User::where('id', $recent_posts->id)->orderBy('id', 'DESC')->get(); 10
SQLは結合?するのが良いのかと思ったのですが、方法がわからなかったので
順番に取得する方法で試してみました。
このような場合、どのようにすれば取得することができるのでしょうか。
テーブル構成は下記のようにしています
MSQL
1 2mysql> DESCRIBE posts; 3+----------------+-----------------+------+-----+---------+----------------+ 4| Field | Type | Null | Key | Default | Extra | 5+----------------+-----------------+------+-----+---------+----------------+ 6| id | bigint unsigned | NO | PRI | NULL | auto_increment | 7| user_id | bigint unsigned | NO | MUL | NULL | | 8| photo_url | varchar(191) | YES | | NULL | | 9| comment | text | YES | | NULL | | 10| likes | int | NO | | 0 | | 11| grand_status | tinyint(1) | NO | | 0 | | 12| post_status | tinyint(1) | NO | | 0 | | 13| created_at | timestamp | YES | | NULL | | 14| updated_at | timestamp | YES | | NULL | | 15+----------------+-----------------+------+-----+---------+----------------+ 16 17 18mysql> DESCRIBE users; 19+--------------------------------+-----------------+------+-----+---------+----------------+ 20| Field | Type | Null | Key | Default | Extra | 21+--------------------------------+-----------------+------+-----+---------+----------------+ 22| id | bigint unsigned | NO | PRI | NULL | auto_increment | 23| name | varchar(191) | YES | | NULL | | 24| points | bigint | NO | | 0 | | 25| created_at | timestamp | YES | | NULL | | 26| updated_at | timestamp | YES | | NULL | | 27| deleted_at | timestamp | YES | | NULL | | 28+--------------------------------+-----------------+------+-----+---------+----------------+ 29
回答1件
あなたの回答
tips
プレビュー