>데이터 베이스 >MySQL 튜토리얼 >Laravel Join Operations를 사용하여 소셜 네트워크에서 팔로우하는 사용자의 게시물을 검색하는 방법은 무엇입니까?

Laravel Join Operations를 사용하여 소셜 네트워크에서 팔로우하는 사용자의 게시물을 검색하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-25 07:52:29571검색

How to Retrieve Posts from Users You Follow in a Social Network using Laravel Join Operations?

소셜 네트워크 기능을 위한 세 개의 테이블을 사용한 Laravel Join

Laravel에서는 여러 테이블을 작업할 때 조인 수행 방법을 이해하는 것이 중요합니다. 효율적으로 운영합니다. 이 시나리오에서는 특정 사용자가 팔로우하는 사용자의 게시물을 검색하는 것을 목표로 합니다.

데이터베이스 테이블

관련 테이블은 세 개입니다.

  • 사용자: id
  • 팔로워: user_id, follower_id
  • 공유: user_id

데이터베이스 쿼리를 사용한 쿼리

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.