Laravel分明的结果

时间:2016-09-04 19:48:43

标签: php laravel laravel-5 eloquent laravel-5.3

我正在构建一个PM系统,我遇到了问题。

这是我的PM表:

id, user_id, to, content

现在,在我的收件箱页面中,我提取了向我发送消息的所有用户。

$pms = DB::table('pm')->select('user_id')->distinct()->where('to', Auth::id())->get();

问题是,如果我向select方法添加更多列,它将不再是明显的......

1 个答案:

答案 0 :(得分:0)

您可以使用Eloquent及其 whereHas()方法轻松完成此操作。

首先,在模型中定义模型和关系:

class Message extends Model {
  protected $table = 'pm';
}

class User extends Model {
  public function sent_messages() {
    return $this->hasMany(Message::class);
  }
}

现在,抓取所有拥有相关消息模型的用户,其中列与您的ID匹配:

$usersThatSentMeMessages = User::whereHas('sent_messages', function($query) {
    $query->where('to', Auth::id());
});