> 데이터 베이스 > MySQL 튜토리얼 > Twitter와 같은 피드를 위해 Laravel에서 세 개의 테이블을 조인하는 방법은 무엇입니까?

Twitter와 같은 피드를 위해 Laravel에서 세 개의 테이블을 조인하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-27 00:00:05
원래의
897명이 탐색했습니다.

How to Join Three Tables in Laravel for a Twitter-like Feed?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿