Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel 5.2带连接的查询范围_Php_Laravel_Laravel 5_Eloquent_Laravel 5.2 - Fatal编程技术网

Php laravel 5.2带连接的查询范围

Php laravel 5.2带连接的查询范围,php,laravel,laravel-5,eloquent,laravel-5.2,Php,Laravel,Laravel 5,Eloquent,Laravel 5.2,我想要一个列表,包含同一订阅下的所有用户帖子。所以我有一个订阅表、用户表和post表 帖子属于用户,用户属于订阅 我在laravel.com上读到,我可以使用全局查询范围 SQL应该是(我认为): 我必须在范围文件中放置什么 public function apply(Builder $builder, Model $model) { return $builder->where(????); } 第二个问题:这是对其他订阅用户“隐藏”帖子的好方法吗?这应该可以做到: $builde

我想要一个列表,包含同一订阅下的所有用户帖子。所以我有一个订阅表、用户表和post表

帖子属于用户,用户属于订阅

我在laravel.com上读到,我可以使用全局查询范围

SQL应该是(我认为):

我必须在范围文件中放置什么

public function apply(Builder $builder, Model $model) {
  return $builder->where(????);
}

第二个问题:这是对其他订阅用户“隐藏”帖子的好方法吗?

这应该可以做到:

$builder
  ->join('users', 'posts.user_id', '=', 'users.id')
  ->join('subscriptions', 'users.subscription_id', '=', 'subscriptions.id')
  ->where('subscriptions.id', Auth::user()->subscription_id);

这是一种对其他订阅隐藏帖子的好方法,只要您始终使用帖子模型的方法来加载帖子,因为只有在全局范围被应用时。如果您使用DBfacade手动访问数据,则不会应用此选项。

有一个软件包,正是为您这样做的:
$builder
  ->join('users', 'posts.user_id', '=', 'users.id')
  ->join('subscriptions', 'users.subscription_id', '=', 'subscriptions.id')
  ->where('subscriptions.id', Auth::user()->subscription_id);