@Absolute138

Как правильно выбрать из двух таблиц по массиву id?

Сейчас у меня так и оно работает. Но что-то мне подсказывает, что я написал г*внокод))
Подскажите, пожалуйста, как правильно и разумно здесь поступить?
В getVMUsersData передается массив id пользователей.
public function getVMUsersData($arr = array()){
		
		$db = JFactory::getDBO();
		
				$id_s = implode(',', $arr);
				$query = $db->getQuery(true);
				$query->select($db->quoteName(array('virtuemart_user_id', 'customer_number')));
				$query->from($db->quoteName('#__virtuemart_vmusers'));
				$query->where($db->quoteName('virtuemart_user_id') . ' IN(' . $id_s . ')');
				$db->setQuery($query);
				$results = $db->loadObjectList();
				
			unset($query);
			
			$query = $db->getQuery(true);
			$query->select($db->quoteName(array('virtuemart_user_id', 'last_name','first_name','city','school','class','teacher')));
			$query->from($db->quoteName('#__virtuemart_userinfos'));
			$query->where($db->quoteName('virtuemart_user_id') . ' IN(' . $id_s . ')');
			$db->setQuery($query);
			$temp = $db->loadObjectList();

			foreach($results as $k=>&$v){
				foreach($temp as $key=>$val){
					if($v->virtuemart_user_id == $val->virtuemart_user_id){
						$v->last_name = $val->last_name;
						$v->first_name = $val->first_name;
						$v->city = $val->city;
						$v->school = $val->school;
						$v->{'class'} = get_object_vars($val)['class'];
						$v->teacher = $val->teacher;
			
					}
		
				}
			}
				
			return $results;
	}
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
b2z
@b2z
Вместе - лучше
$id_s = implode(',', $arr);
$query = $db->getQuery(true);
$query->select(
	$db->quoteName(
		array('vv.virtuemart_user_id', 'vv.customer_number',  'vu.last_name', 'vu.first_name', 'vu.city', 'vu.school', 'vu.class', 'vu.teacher')
	)
);
$query->from($db->quoteName('#__virtuemart_vmusers', 'vv'));
$query->leftJoin($db->quoteName('#__virtuemart_userinfos', 'vu')) ' ON ' . $db->quoteName('vv.virtuemart_user_id') . ' = ' . $db->quoteName('vu.virtuemart_user_id'));
$query->where($db->quoteName('vv.virtuemart_user_id') . ' IN(' . $id_s . ')');
$db->setQuery($query);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы