소셜 네트워크 기능을 위한 세 개의 테이블을 사용한 Laravel Join
Laravel에서는 여러 테이블을 작업할 때 조인 수행 방법을 이해하는 것이 중요합니다. 효율적으로 운영합니다. 이 시나리오에서는 특정 사용자가 팔로우하는 사용자의 게시물을 검색하는 것을 목표로 합니다.
데이터베이스 테이블
관련 테이블은 세 개입니다.
데이터베이스 쿼리를 사용한 쿼리
한 가지 옵션은 Laravel의 데이터베이스 쿼리 빌더를 사용하는 것입니다. 쿼리를 구성하는 방법은 다음과 같습니다.
<code class="php">$shares = DB::table('shares') ->leftjoin('followers', 'shares.user_id', '=', 'followers.follower_id') ->leftjoin('users', 'followers.user_id', '=', 'users.id') ->where('users.id', 3) ->where('shares.user_id', 'followers.follower_id') ->get();</code>
모델 접근 방식
또는 Laravel의 Eloquent ORM을 사용하여 보다 구조화되고 유형이 안전한 접근 방식을 사용할 수도 있습니다. 각 테이블에 대한 모델을 정의합니다.
<code class="php">// 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'); } } // Share model class Share extends Model { public function user() { return $this->belongsTo('User'); } }</code>
그런 다음 다음 쿼리를 사용할 수 있습니다.
<code class="php">$my = User::find('my_id'); // Eager load the owner of the share $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; }</code>
이 쿼리는 팔로우하는 사용자가 공유한 모든 항목을 검색하고 공유한 사용자를 열심히 로드합니다.
위 내용은 Laravel Join Operations를 사용하여 소셜 네트워크에서 팔로우하는 사용자의 게시물을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!