2017-11-15 10 views
1

まず、貧しい私の英語は申し訳ありません。
5つの記事で最高の視聴回数を得たいです。 私はそれを試しましたが、私はEloquentクエリーに問題があります。Laravel5 Eloquent:特殊な状態からいくつかの記事を入手するには?

laravelソース

<?php 
    $up = "SELECT id FROM articles WHERE id IN (SELECT id from (SELECT id FROM articles ORDER BY view_count DESC LIMIT 0,5) x)"; 
    $builder = new \App\Article; 
    $query = $builder->selectRaw("articles.*, $up"); 
?> 
    @forelse($query->latest() as $article) 
     <img src="{{ $article->thumbnail }}" alt="{{ $article->title }}" title="{{ $article->title }}"> 
    @empty 
     <p class="text-center text-danger"> 
     empty... 
     </p> 
    @endforelse 

DBクエリ結果

MariaDB [test]> SELECT id FROM articles WHERE id IN (SELECT id from (SELECT id FROM articles ORDER BY view_count DESC LIMIT 0,5) x); 
+------+ 
| id | 
+------+ 
| 4018 | 
| 4045 | 
| 3800 | 
| 4011 | 
| 4005 | 
+------+ 
5 rows in set (0.00 sec) 

私はこのトピックに関する他の記事を見てきましたが、私は解決策を取得できませんでした。
ご協力いただきありがとうございます。あなたは自分のコントローラ内で記述する必要がビューによって命じ

+0

多分あなたはこの https://laravel.com/docsをチェックアウトする必要があります/5.5/eloquent#retrieving-シングルモデル かなりお役に立ちました – BARNOWL

+2

あなたのコードはきれいではない、真剣にlaravel docsを見てください。 – BARNOWL

+0

なぜ2つのサブクエリ?内側のクエリは、使用しているクエリと同じ結果を返しません。 – rypskar

答えて

1

まずあなたがコントローラであなたのサービスsttufに持っていますビューをクリーンアップし、MVCパターンを尊重します。

$articles = App\Article::orderBy('view_count', 'desc') 
       ->take(5) 
       ->get(); 

return view('SomeView')->withArticles($articles); 

そしてSomeView.blade.phpで:あなたがそれを行うために雄弁を使用することができ、コントローラでそう

@forelse($articles as $article) 
    <img src="{{ $article->thumbnail }}" alt="{{ $article->title }}" title="{{ $article->title }}"> 
@empty 
    <p class="text-center text-danger"> 
    empty... 
    </p> 
@endforelse 
+0

これは機能しています。ありがとう! – User8392

0

5の記事:あなたのarticle.blade.phpで

$articles = Article::orderBy('views', DESC)->take(5)->get(); 
return view('article', ['articles' => $articles 
]); 

@forelse($articles() as $article) 
    <img src="{{ $article->thumbnail }}" alt="{{ $article->title }}" title="{{ $article->title }}"> 
@forelse 
    <p class="text-center text-danger"> 
    empty... 
    </p> 
@endforelese 
関連する問題