web-dev-qa-db-ja.com

最大3つの画像を表示するLIMIT付きのMySQL SELECTクエリ

ログインしたユーザーに割り当てられている画像を3つまでデータベーステーブルに表示したい。次のMySQLクエリを作成しました。

    $db = JFactory::getDBO();
    //GET GALLEERY IMAGES
    $query = $db->getQuery(true);
    $query->select('*');
    $query->from('#__mcloud_mgallery');
    $query->where('model_id = '.$userid);
    $query->order('id');
    $db->setQuery($query);
    $rows = $db->loadObject();

    $gallery_img = $rows->file;

エコーする場合$gallery_imgこれは画像の1つだけを出力します。データベーステーブルを見ると(ログインしているユーザーの場合)、そのユーザーに3つの画像が割り当てられています。

id      file                    model_id

389     10_burgers_food.jpeg    941
390     14_bridge.jpeg          941
391     test_imag.jpeg          941

変数が1つしかない場合、どうすれば3つの画像を表示できますか$gallery_img

1
RustyJoomla

問題は、あなたがloadObject()を使用していることです。これは常に1つの結果のみを返します。複数にする場合は、次のようにloadObjectList()を使用する必要があります。

$db = JFactory::getDbo();

$query = $db->getQuery(true);
$query->select('*')
      ->from($db->qn('#__mcloud_mgallery'))
      ->where($db->qn('model_id') . ' = ' . $userid)
      ->order('id');
$db->setQuery($query);

$rows = $db->loadObjectList();

foreach ($rows as $row)
{
    echo '<p>' . $row->file . '</p>';
}

データベースに3つ以上の画像が存在する場合に備えて、次のようにクエリの結果を3つに制限することもできます。

$query->select('*')
      ->from($db->qn('#__mcloud_mgallery'))
      ->where($db->qn('model_id') . ' = ' . $userid)
      ->order('id')
      ->setLimit('3'); // <-- Here
$db->setQuery($query);

お役に立てれば

4
Lodder