代码之家  ›  专栏  ›  技术社区  ›  slickness

如何在foreach中显示其他数据?

  •  0
  • slickness  · 技术社区  · 7 年前

    在我的show函数中,您可以观看每个组,我加载所有具有相同标签的文章。得票最多的文章将分别显示在顶部。此外,我还指出了这组项目的平均评分。我的函数是这样的:

    public function show($id)
        {
            $group = group::find($id);
    
                $tagIdArray = $group->tags->pluck('id')->all();
    
                $mostvotedarticle = Article::where('type', 4)->whereIn('privacy', [1, 3])
                    ->whereHas('tags', function($query) use ($tagIdArray) {
                        $query->whereIn('tags.id', $tagIdArray);
                    }, '>=', count($tagIdArray))
                    ->orderByVotes()->first();
    
                $articledown = Article::where('status', 1)->whereHas('tags', function($query) use ($tagIdArray) {
                    $query->whereIn('tags.id', $tagIdArray);
                }, '>=', count($tagIdArray))->downVotesAll()->count();
    
                $articleup = Article::where('status', 1)->whereHas('tags', function($query) use ($tagIdArray) {
                    $query->whereIn('tags.id', $tagIdArray);
                }, '>=', count($tagIdArray))->upVotesAll()->count();
    
                $ratio = null;
    
                if($articleup + $articledown == 0) {
                    $ratio = 0;
                } else {
                    $ratio = ($articleup*100)/($articleup + $articledown);
                }
    
        return view('singlegroup',compact('groups','mostvotedarticle', 'ratio'));
    }
    

    在“概述”页面上,各个组以foreach循环显示:

    功能:

    public function index()
        {
            $user = Auth::user();
            $groups = $user->groups()->latest()->with('tags')->paginate(20);
    
            return view('groups', compact('groups'));
        }
    

    查看:

    @foreach ($groups as $group)
            {{$group->name}}                      
            <img src="-----load mostvotedarticle that is in this group------" alt="" />
            <div class="progress-bar-primary" style="width:{{$ratio}}%;">
    @endforeach 
    

    如何在foreach循环中显示最受欢迎的汽车和团体评分?

    文章模型

    public function scopeOrderByVotes($query)
        {
            $query->leftJoin('Article_activities', 'Article_activities.article_id', '=', 'articles.id')
                ->selectRaw('articles.*, count(Article_activities.id) as aggregate')
                ->groupBy('articles.id')
                ->orderBy('aggregate', 'desc');
        }
    
        public function scopeDownVotesAll($query)
        {
            $query->leftJoin('Article_activities', 'Article_activities.article_id', '=', 'articles.id')
                ->selectRaw('articles.*, count(Article_activities.id) as aggregate')
                ->where('Article_activities.activity', '=', '0');
        }
    
        public function scopeUpVotesAll($query)
        {
            $query->leftJoin('Article_activities', 'Article_activities.article_id', '=', 'articles.id')
                ->selectRaw('articles.*, count(Article_activities.id) as aggregate')
                ->where('Article_activities.activity', '=', '1');
        }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Alexander Villalobos    7 年前

    你需要把所有的东西都放进你的房间 foreach

    public function index() 
    { 
     $user = Auth::user(); 
     $groups = $user->groups()->latest()->with('tags')->paginate(20); 
     $ratio = null; 
     foreach($groups as $key => $group) 
     { 
      $tagIdArray = $group->tags->pluck('id')->all(); 
      $mostvotedarticle = Article::where('type', 4)->whereIn('privacy', [1, 3]) 
      ->whereHas('tags', function($query) use ($tagIdArray) { 
      $query->whereIn('tags.id', $tagIdArray); 
      }, '>=', count($tagIdArray)) 
      ->orderByVotes()->first(); 
    
     $articledown = Article::where('status', 1)->whereHas('tags', function($query) use 
     ($tagIdArray) { 
     $query->whereIn('tags.id', $tagIdArray); 
     }, '>=', count($tagIdArray))->downVotesAll()->count(); 
    
    $articleup = Article::where('status', 1)->whereHas('tags', function($query) use 
    ($tagIdArray) { 
    $query->whereIn('tags.id', $tagIdArray); 
    }, '>=', count($tagIdArray))->upVotesAll()->count(); 
    
    
    if($articleup + $articledown == 0) { 
    $ratio = 0; 
    } else { 
    $ratio = ($articleup*100)/($articleup + $articledown); 
    } 
    
    $group->mostVote = $mostvotedarticle; 
    $group->ratio = $ratio; 
     } 
      return view('groups', compact('groups')); 
    }
    
    推荐文章