Я пытаюсь написать функцию поиска для сайта, написанную на CodeIgniter, но у меня возникли проблемы с оператором соединения в модели.
Контроллер передает массив критериев поиска в функцию модели: get_sales($search_criteria);
function get_sales($search_criterie){
$this->db->join('sales_prices', 'sales_prices.sale_id = sales.sale_id', 'left');
$this->db->join('sales_sizes', 'sales_sizes.sale_id = sales.sale_id', 'left');
$query = $this->db->get_where('sales', $search_criterie);
$sale_data = $query->result_array();
}
У меня возникли две проблемы:
1) Мне нужно предложение WHERE в объединении sales_sizes. Прямо сейчас он присоединяется к sales_sizes.sale_id ON sales.sale_id, но я хочу иметь возможность фильтровать по размеру через массив $search_criteria. Как я могу это сделать?
2) Каждая продажа обычно имеет несколько размеров, и я хочу, чтобы выходные данные запроса были отформатированы следующим образом:
Array
(
[sale_id] => 1
[sale_category] => shoes
[sale_price] => 29.99
[sale_sizes] => Array
(
[0] => 10
[1] => 10.5
[2] => 11
)
)
Я попробовал несколько циклов foreach для форматирования вывода, но не смог заставить их работать. Надеюсь, кто-нибудь сможет помочь.
Обновление:
Как мне преобразовать следующий результат запроса в формат, подобный приведенному выше?
Array
(
[0] => Array
(
[sale_id] => 1
[sale_category] => shoes
[sale_price] => 29.99
[sale_size] => 10
)
[1] => Array
(
[sale_id] => 1
[sale_category] => shoes
[sale_price] => 29.99
[sale_size] => 10.5
)
[2] => Array
(
[sale_id] => 1
[sale_category] => shoes
[sale_price] => 29.99
[sale_size] => 11
)
)
Подробнее здесь: https://stackoverflow.com/questions/127 ... om-aggrega