2017-03-18 3 views
0

どのようにして特定の量のデータをデータベースから取り出すことができますか?私はYii2と協力しています。 私がこれまで試したです持っているもの:forループでYii2のデータベースからの特定のデータ量

$model = new \app\models\Post(); 

for($i = 0; $i < 3; $i++) { 
    $post = $model::find()->orderBy(["post_id" => SORT_DESC])->one(); 
    $contetnt = $post['content']; 

    echo "<div>" . $contetnt . "</div>"; 
} 

それは私に3回ofcourseの最後のポストの内容を示しているが、どのように私は仕事にそれを再構築する必要がありますか? 私は多くのポストを見ましたが、答えが見つからなかったか、あるいはそれを動作させる方法を理解できなかったかもしれません! アイデアは、サイトのホームページに最後の3つの投稿を表示することです。 ありがとうございます!最後の3つのポスト

答えて

0

表示:Active Record Guide と、この:Active Record methods

$lastPosts = Post::find()->orderBy("post_id DESC")->limit(3)->all(); 
foreach ($lastPosts as $post) { 
    // ... 
} 

はこれをお読みください。

+0

ありがとうございます! –

0
$model = new \app\models\Post(); 
    $posts = $model::find()->orderBy(["post_id" => SORT_DESC])->limit(3)->all(); 
    foreach ($posts as $post){ 
     $contetnt = $post['content']; 
     echo "<div>" . $contetnt . "</div>"; 
    } 

[注記:]あなたはActiveQuery :: 1()またはYiiの\ DB \クエリ:: 1を()を使用する場合yii2は自動的にあなたのためにそれをしないのでは、あなたが、limit(1)を追加する必要があり、したがって、->orderBy(["post_id" => SORT_DESC])を使用すると、MySQLはすべてのテーブルカラムをWebサーバにフェッチし、yii2はそれらのいずれかを取得します。表に大きなレコードがある場合、これにより、504ゲートウェイ・タイムアウト・エラーの要求状況が発生する可能性があります。

+0

お役立ち情報大いに感謝する! –

関連する問題