Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как правильно сделать запрос


MaJIon

Recommended Posts

Здравствуйте, подскажите плз как правильно сделать запрос 
 

public function getMaterial($material_id) {
  $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "material b LEFT JOIN " . DB_PREFIX . "material_image bi ON b.material_id = bi.material_id WHERE b.status = '1' AND bi.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY bi.sort_order ASC");

  return $query->rows;
}



Чтобы выводилось в таком виде: (типа масив в массиве привязывалась по material_id)

 

[0] => Array
        (
            [material_id] => 7
            [name] => Milano (антикоготь)
            [type] => 0
            [status] => 1
       		[0] => Array (
					[material_id] => 7
                    [language_id] => 1
                    [title] => Milano 02 Beige
                    [image] => catalog/material/milano/Milano04Caramel.jpg
                    [sort_order] => 2
			)
	)
[1] => Array
        (
            [material_id] => 7
            [name] => Milano (антикоготь)
            [type] => 0
            [status] => 1
       		[0] => Array (
					[material_id] => 7
                    [name] => Milano (антикоготь)
                    [type] => 0
                    [status] => 1
                    [material_image_id] => 246
                    [language_id] => 1
                    [title] => Milano 02 Beige
                    [image] => catalog/material/milano/Milano04Caramel.jpg
                    [sort_order] => 2




Сейчас данный запрос выглядит так 

 

 

[0] => Array
        (
            [material_id] => 7
            [name] => Milano (антикоготь)
            [type] => 0
            [status] => 1
            [material_image_id] => 245
            [language_id] => 1
            [title] => Milano 01 Cream
            [image] => catalog/material/milano/4db5691e-4f19-11e8-bf3b-901b0ef71795-700x700.jpg
            [sort_order] => 1
        )

    [1] => Array
        (
            [material_id] => 7
            [name] => Milano (антикоготь)
            [type] => 0
            [status] => 1
            [material_image_id] => 246
            [language_id] => 1
            [title] => Milano 02 Beige
            [image] => catalog/material/milano/Milano04Caramel.jpg
            [sort_order] => 2
        )




Скриншоты таблиц прикрепил

 

1.thumb.jpg.fc4a516aedceec807bda11bdf05020ac.jpg

 

 

2.thumb.jpg.d2e60a31635d317ccf83d36286ded48b.jpg

Надіслати
Поділитися на інших сайтах


3 часа назад, MaJIon сказал:

Чтобы выводилось в таком виде: (типа масив в массиве привязывалась по material_id)

Перебирать после запроса через php?

$data = array();

foreach ($query->rows as $row) {
	$data[] = array(
		'material_id'	=> $row['material_id'],
		'name'			=> $row['name'],
		'type'			=> $row['type'],
		'status'		=> $row['status'],
		'data'			=> array (
			'title'			=> $row['title'],
			'image'			=> $row['image'],
			'sort_order'	=> $row['sort_order'],
		),
	);
}

return $data;

 

Надіслати
Поділитися на інших сайтах

7 часов назад, dexion сказал:

Перебирать после запроса через php?



$data = array();

foreach ($query->rows as $row) {
	$data[] = array(
		'material_id'	=> $row['material_id'],
		'name'			=> $row['name'],
		'type'			=> $row['type'],
		'status'		=> $row['status'],
		'data'			=> array (
			'title'			=> $row['title'],
			'image'			=> $row['image'],
			'sort_order'	=> $row['sort_order'],
		),
	);
}

return $data;

 


Спасибо за ответ! 

Я неправильно вопрос сформулировал ( 
У меня есть 2 таблицы, тип материалов (oc_material) и материал определенного типа (oc_material_image), у материалов, которые относятся к конкретному типу совпадает material_id. Вот мне надо развернуть массив таким образом, чтобы было: 

 

Array
(
	[0] => Array
        (
          Тип материала (oc_material)
          Название типа материалов (oc_material)
          Статус типа материала (oc_material)
          array ( 
        	  [0] Все поля одного материала из таблицы oc_material_image только одного материала (материал 1)(oc_material_image)
			  [1] Все поля одного материала из таблицы oc_material_image только одного материала (материал 2)(oc_material_image)
			  [2] Все поля одного материала из таблицы oc_material_image только одного материала (материал 3)(oc_material_image)
					

 

 

Змінено користувачем MaJIon
Надіслати
Поділитися на інших сайтах


2 часа назад, spectre сказал:

посмотрите как цепляется тот же product_description и сделайте по аналогии

 

Спасибо, но на подобии product_description не получилось, так как выводилось не правильно, сделал на подобии атрибутов

Конечно немного отошел от стандартов opencart и подключил одну модель к другой, но в целом добился того результата, что требовалось
 

public function getMaterial($material_id) {
		
		$this->load->model('tool/image');
		
		$material_group_data = array();

		$material_group_query = $this->db->query("SELECT m.material_id, m.name, m.type, mi.material_id FROM " . DB_PREFIX . "material m LEFT JOIN " . DB_PREFIX . "material_image mi ON (m.material_id = mi.material_id) WHERE m.status = '1' AND mi.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY m.material_id ORDER BY mi.sort_order, m.material_id");
 
		foreach ($material_group_query->rows as $material_group) {
			 
			$material_data = array();
			
			$material_query = $this->db->query("SELECT m.material_id, mi.title, mi.material_id, mi.image FROM " . DB_PREFIX . "material m LEFT JOIN " . DB_PREFIX . "material_image mi ON (m.material_id = mi.material_id)  WHERE m.material_id = '" . (int)$material_group['material_id'] . "' AND mi.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY mi.sort_order, mi.material_id");
 
			foreach ($material_query->rows as $material_image) {
				
				if ($material_image['image']) {
					$image = $this->model_tool_image->resize($material_image['image'], 300, 300);
					$popup = $this->model_tool_image->resize($material_image['image'], 700, 700);
				} else {
					$image = '';
					$popup = '';
				}
			
				$material_data[] = array(
					'material_id' => $material_image['material_id'],
					'title'         => $material_image['title'],
					'image'         => $image,
					'popup'         => $popup
				);
			}

			$material_group_data[] = array(
				'material_id' =>  $material_group['material_id'],
				'name'               => $material_group['name'],
				'type'               => $material_group['type'],
				'material'          => $material_data
			);
		}
 
		return $material_group_data;
	}

 

Надіслати
Поділитися на інших сайтах


14 часов назад, MaJIon сказал:

Чтобы выводилось в таком виде: (типа масив в массиве привязывалась по material_id)

по посатвленной задаче и примеру -никак

Посмотриет как получают getProductAttribute

Сначала група
Затем цикл по группам
 формируется исходящий массив
и в каждой итерации получение атрибутов

 

  • +1 1
Надіслати
Поділитися на інших сайтах

10 минут назад, chukcha сказал:

по посатвленной задаче и примеру -никак

Посмотриет как получают getProductAttribute

Сначала група
Затем цикл по группам
 формируется исходящий массив
и в каждой итерации получение атрибутов

 


Сделал уже, задача решена

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.