Я пытаюсь объединить две таблицы из базы данных, и на основе моей первой я хочу получить некоторые значения из другой и добавить их в массив.
Вот моя проблема:
Моя первая база данных выглядит так:
FIRST TABLE:
id, credit_type, association_name, address, city, province, postal_code, country, cycle_type, cycle_begin, cycle_months
Моя вторая база данных выглядит так:
SECOND TABLE:
id, association_id, designation_name
Идентификатор в моей первой таблице совпадает с association_id во второй таблице, поэтому мне не нужен INNER JOIN.
Мой подход заключается в следующем:
<?php
public function my_function()
{
$sql = ee()->db->select('*')->from('first_table')->get();
$data['database'] = [];
if ($sql->num_rows() > 0)
{
foreach($sql->result_array() as $row)
{
$id[] = $row['id'];
$data['database'][] = $row;
}
}
foreach ($data['database'] as $key => $value) {
$association_query = ee()->db->query("SELECT * FROM second_table WHERE id = $id");
foreach($association_query->result_array() as $row_two)
{
if ($association_query->num_rows() > 0)
{
$data['database'][$key]['associations'][] = $row_two['designation_name'];
}
}
}
return ee()->load->view('index', $data, true);
}
?>
Синтаксис ee()->db->select('*')
- это подготовленная инструкция из механизма выражений, равная SELECT * FROM first_table (sanitaized).
Итак, как вы можете видеть, я пытаюсь передать значение $id
, которое является массивом, в мой запрос. Дело в том, что как только я нажимаю это значение $id[] = $row['id']
, я создаю хороший массив, но когда я перебираю цикл foreach, он умножает мой массив на многие другие массивы, поэтому я не могу выполнить свой запрос, даже если я технически в цикле foreach.
Плюс, как только я пытаюсь поместить результат моего запроса в мой массив, скажем, меняя идентификатор статического идентификатора, например, для id = 3, я получаю действительно странный результат, как и многие массивы, повторяемые с 1 значение, значение 2, значение 3 и т. д., когда я хочу нажать «связь» моего ключа только там, где он представлен в другой таблице.