ログインしたユーザーに割り当てられている画像を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
?
問題は、あなたが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);
お役に立てれば