前提・実現したいこと
タイトルの通りログインしているユーザーがフォローしているつぶやき一覧機能の実装をしたいと考えています。
ログインしているユーザーでフォローしているユーザーの取得と誰がフォローしている関係なしにフォローしているという条件でつぶやき一覧表示する記述はできました。
この二つの記述を合わせられれば良いのですが、分からず質問させていただきます。
ログインしているユーザーでフォローしているユーザーの取得の記述
FollowsController
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Illuminate\Support\Facades\Auth; 7use Illuminate\Support\Facades\DB; 8use App\Follow; 9 10class FollowsController extends Controller 11{ 12 13public function followList(Follow $follow) 14 { 15 $user = auth()->user(); 16 $follow_ids = $follow->followingIds($user->id); 17 dd($follow_ids); 18 } 19}
誰がフォローしている関係なしにフォローしているという条件でつぶやき一覧の記述
FollowsController
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Illuminate\Support\Facades\Auth; 7use Illuminate\Support\Facades\DB; 8use App\Follow; 9 10class FollowsController extends Controller 11{ 12 13public function followList() 14 { 15 $timelines = \DB::table('follows') 16 ->join('posts','posts.user_id','=','follows.followed_id') 17 ->get(); 18 return view('follows.followList',['timelines' => $timelines]); 19 } 20}
該当ソースコード
Followモデル
php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Follow extends Model 8{ 9 10 public function followingIds(Int $user_id) 11 { 12 return $this->where('following_id', $user_id)->get(); 13 } 14 15}
ルート
php
1Route::group(['middleware' => 'auth'], function() { 2Route::get('/followList', 'FollowsController@followList'); 3});
followsテーブル
php
1<?php 2 3use Illuminate\Support\Facades\Schema; 4use Illuminate\Database\Schema\Blueprint; 5use Illuminate\Database\Migrations\Migration; 6 7class CreateFollowsTable extends Migration 8{ 9 /** 10 * Run the migrations. 11 * 12 * @return void 13 */ 14 public function up() 15 { 16 Schema::create('follows', function (Blueprint $table) 17 { 18 $table->increments('id')->autoIncrement(); 19 $table->integer('following_id')->unsigned(); 20 $table->integer('followed_id')->unsigned(); 21 $table->timestamp('created_at')->useCurrent(); 22 23 $table->index('following_id'); 24 $table->index('followed_id'); 25 26 $table->unique(['following_id','followed_id']); 27 }); 28 } 29 30 31 32 /** 33 * Reverse the migrations. 34 * 35 * @return void 36 */ 37 public function down() 38 { 39 Schema::dropIfExists('follows'); 40 } 41}
postsテーブル
php
1<?php 2 3use Illuminate\Support\Facades\Schema; 4use Illuminate\Database\Schema\Blueprint; 5use Illuminate\Database\Migrations\Migration; 6 7class CreatePostsTable extends Migration 8{ 9 /** 10 * Run the migrations. 11 * 12 * @return void 13 */ 14 public function up() 15 { 16 Schema::create('posts', function (Blueprint $table) 17 { 18 $table->increments('id')->autoIncrement(); 19 $table->integer('user_id')->unsigned(); 20 $table->string('post',500); 21 $table->timestamps(); 22 23 $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade'); 24 }); 25 } 26 27 /** 28 * Reverse the migrations. 29 * 30 * @return void 31 */ 32 public function down() 33 { 34 Schema::dropIfExists('posts'); 35 } 36} 37
バージョン
laravel 5.5.48
php 7.4.5
homestead
そもそもフォローしているユーザーのつぶやき一覧の表示は上記のやり方で合っているのでしょうか。
もし考え方が間違えている、もっといい方法があるなどありましたら重ねてご教授いただければ幸いです。
以上、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。