将DB Join Query转换为Eloquent Relationship

时间:2018-05-20 00:44:22

标签: php laravel eloquent

我的用户模型中有以下功能:

public function getInterests()
{

    return $this->hasMany('App\Interest')->get();

}

public function getGifts()
{

    return DB::table('gifts')
        ->join('sent_gifts', function ($join) {
            $join->on('gifts.id', '=', 'sent_gifts.gift_id')
                ->where('user_2', $this->id);
        })
        ->join('users', function ($join) {
            $join->on('users.id', '=', 'sent_gifts.user_1');
        })
        ->get();

}

我无法理解如何创建复杂的Eloquent Relationships,但我想使用Eloquent ORM的所有好处,例如日期中的访问者和碳实例。

我如何将getGifts()函数转换为雄辩的关系?

P.S:我已经创建了 App \ User App \ Gift App \ SentGift 模型。

1 个答案:

答案 0 :(得分:0)

你可以这样使用。这是我的关系。

用户模型

class User extends Eloquent { 
   protected $table = 'users'; 
   public function posts() { 
     return $this->hasMany('App\Post'); 
   } 
}

发布模型

class Post extends Eloquent { 
  protected $table = 'posts'; 
  public function comments() { 
    return $this->hasMany('App\Comment'); 
  } 
 }

查询使用如下......

User::with('posts.comments')->get();