public function getDisenchantFrom() { $drop = Yii::app()->cache->get('item_' . $this->entry . '_disenchantFrom'); if ($drop === false) { $drop_de = WowDropLoot::drop('disenchant_loot_template', $this->entry); $drop = array(); if ($drop_de) { foreach ($drop_de as $lootid => $drop_info) { $rows = $this->dbConnection->createCommand("\n SELECT displayid, entry, name, itemLevel, Quality\n FROM item_template\n WHERE DisenchantID = {$lootid}")->queryAll(); foreach ($rows as $row) { $row['icon'] = Yii::app()->db->createCommand("SELECT icon FROM wow_icons WHERE displayid = {$row['displayid']} LIMIT 1")->queryScalar(); $drop[] = array_merge($row, $drop_info); } } } Yii::app()->cache->set('item_' . $this->entry . '_disenchantFrom', $drop); } $dataProvider = new CArrayDataProvider($drop, array('keyField' => 'entry', 'pagination' => false)); return $dataProvider; }