コード例 #1
0
ファイル: ForumPost.php プロジェクト: exelv1/Contentify
 /**
  * Select only those forums the user has access to.
  * WARNING: Creates JOINs with the forum_threads and the forums table.
  *
  * @param Builder   $query  The Eloquent Builder object
  * @param User      $user   User model or null if it's the current client
  * @return Builder
  */
 public function scopeIsAccessible($query, $user = null)
 {
     $query->select('forum_posts.*')->join('forum_threads', 'forum_posts.thread_id', '=', 'forum_threads.id')->join('forums', 'forum_threads.forum_id', '=', 'forums.id');
     if (!$user) {
         $user = user();
     }
     if ($user) {
         $internal = $user->hasAccess('internal');
         $teamIds = DB::table('team_user')->whereUserId($user->id)->lists('team_id');
         $teamIds[] = -1;
         // Add -1 as team ID so the SQL statements (`team_id` in (...)) always has valid syntax
         return $query->where('internal', '<=', $internal)->where(function ($query) use($teamIds) {
             $query->whereNull('team_id')->orWhereIn('team_id', $teamIds);
         });
     } else {
         return $query->whereInternal(0)->whereNull('team_id');
     }
 }
コード例 #2
0
 /**
  * Apply the scope to a given Eloquent query builder.
  *
  * @param  \Illuminate\Database\Eloquent\Builder  $builder
  * @param  \Illuminate\Database\Eloquent\Model  $model
  * @return void
  */
 public function apply(Builder $builder, Model $model)
 {
     $builder->whereNull($model->getQualifiedDeletedAtColumn());
     $this->extend($builder);
 }