Laravel Join with 3 Tables
Twitter와 같은 피드를 위해 Laravel에서 3개의 테이블을 조인하려면 조인 쿼리를 다음과 같이 구성할 수 있습니다. :
$shares = DB::table('shares') ->join('users', 'users.id', '=', 'shares.user_id') ->join('followers', 'followers.user_id', '=', 'users.id') ->where('followers.follower_id', '=', 3) ->get();
이 쿼리는 조인 절에 지정된 조건을 기반으로 공유, 사용자 및 팔로어 테이블을 조인합니다.
또 다른 접근 방식은 원시 쿼리 대신 모델을 사용하는 것입니다. 객체 지향 접근 방식. 다음은 모델을 사용하는 예입니다.
// Define User Model class User extends Model { public function shares() { return $this->hasMany('Share'); } public function followers() { return $this->belongsToMany('User', 'follows', 'user_id', 'follower_id'); } public function followees() { return $this->belongsToMany('User', 'follows', 'follower_id', 'user_id'); } } // Define Share Model class Share extends Model { public function user() { return $this->belongsTo('User'); } } // Model Usage $my = User::find('my_id'); $shares = Share::with('user') ->join('follows', 'follows.user_id', '=', 'shares.user_id') ->where('follows.follower_id', '=', $my->id) ->get('shares.*'); foreach ($shares as $share) { echo $share->user->username; }
이 모델 접근 방식을 사용하면 로그인한 사용자가 팔로우하는 사용자로부터 모든 공유를 검색하여 공유를 생성한 사용자를 즉시 로드할 수 있습니다.
위 내용은 Twitter와 같은 피드를 위해 Laravel에서 세 개의 테이블을 조인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!