Не понимаю логику

Ребята, вопрос такой:

есть база объявлений — образно id, user_id, type, title, text. Все отлично, все работает, т.е. модуль объявлений я сделал, добавляю, удаляю объявления, все ровно, все отлично, НО для каждого объявления есть поле type, оно содержит идентификатор строки из другой таблицы содержащей список типов, это type_id, type_name. Теперь проблема — я хочу получить название типа для объявления и вывести его пользователю. что у нас есть:

обработка экшена

        protected function EventAll() {
                $oResult=$this->Mytest_GetList();
		$this->Viewer_Assign('oResult',$oResult);
                return;
        }



класс:

	public function GetList() {
		$result=$this->oMapperMytest->GetList();
		return $result;
	}


маппер:

        public function GetList()
        {
                $sql = "SELECT ad_id, ad_type, user_id, ad_price, user_ip, ad_torg, ad_hot, ad_title, ad_date, ad_status from ".DB_TABLE_ADDESK." ORDER BY ad_price";
		$aRes=array();
                if ($aRow=$this->oDb->select($sql)) {
			foreach ($aRow as $aTopic) {
				$aRes[]=new MytestEntity_Mytest($aTopic);
			}
                }
		return $aRes;
        }


шаблон:

{foreach from=$oResult item=oR}
	<tr>
		<td>{date_format date=$oR->getDate()}</td>
		<td> ВОТ ТУТ ТО БЫ И НАДО ВЫВЕСТИ ТИП ОБЪЯВЛЕНИЯ </td>
		<td><a href='/addesk/show/{$oR->getId()}.html'>{$oR->getTitle()}</a></td>
		<td>{$oR->getPrice()} {$aLang.addesk_rub} {if $oR->getTorg()==1}
<small>{$aLang.addesk_can_torg}</small>{/if}</td>
	</tr>
{/foreach}

так вот как запросить тип я не понимаю. вроде как в экшене нужно обработать, добавить в класс функцию… но нифига не получается. в вообще уже запутался… :( вобщем помогайте :(

5 комментариев

avatar
вам нужно в 1 запросе выбирать из 2 таблиц? воспользуйтесь LEFT JOIN в запросе
avatar
как то так:
$sql = "SELECT 
	u.*,
	us.type as ustype,
	FROM 
		".DB_TABLE_USER." AS u
		LEFT JOIN ".DB_TABLE_SCHOOL." AS us ON u.id=us.id
	WHERE 
		u.tratata = ?d
	;
avatar
на самом деле я решил этот вопрос именно таким способом, ОДНАКО, если мне нужно будет на одной странице выбрать, допустим, из базы t1 данные и из t2 данные и базы будут не заимосвязаны, например список юзеров и список объявлений. как мне это сделать? меня интересует общий случай.
avatar
два запроса сделайте))
avatar
а просто две функции вызывайте из экшена, вот и все. каждая вернут массив нужных данных, потом скармливаете их шаблонизатору и делов то =)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.