Как использовать построитель запросов CodeIgniter для фильтрации и ORDER BY по списку значений из белого списка [дублика ⇐ Php
-
Anonymous
Как использовать построитель запросов CodeIgniter для фильтрации и ORDER BY по списку значений из белого списка [дублика
public function get_search($start = -0, $limit = null, $postcode = 'default',$branded)
{
if (!empty($branded)) {
$this->db->join('workshop_brand', 'workshops.id = workshop_brand.w_id');
$this->db->where('brand_id', $branded);
$this->db->group_by("workshops.id");
}
if (!empty($postcodes)) {
$this->db->where('`postcode` in (' . $postcodes . ')');
$this->db->where("1 order by ", "FIND_IN_SET(`postcode`,'" . $postcodes . "')", false);
}
$query = $this->db->get('workshops', $limit, $start);
echo $this->db->last_query();
die();
return $query->result_array();
}
Выход:
SELECT *
FROM (`workshops`)
INNER JOIN `workshop_brand` ON `workshops`.`id` = `workshop_brand`.`w_id`
WHERE `workshops`.`status` = 1
AND `postcode` IN (
2530
,2500
,2502
,2505
,2506
,2517
,2518
,2519
,2520
,2522
,2525
,2526
,2527
,2528
,2529
,2533
,2535
,2560
,2574
,2575
,2576
,2577
)
AND 1
ORDER BY FIND_IN_SET(`postcode`, '2530,2500,2502,2505,2506,2517,2518,2519,2520,2522,2525,2526,2527,2528,2529,2533,2535,2560,2574,2575,2576,2577')
OR `brand_id` = '6'
GROUP BY `workshops`.`id`
Подробнее здесь: https://stackoverflow.com/questions/227 ... t-of-white
public function get_search($start = -0, $limit = null, $postcode = 'default',$branded)
{
if (!empty($branded)) {
$this->db->join('workshop_brand', 'workshops.id = workshop_brand.w_id');
$this->db->where('brand_id', $branded);
$this->db->group_by("workshops.id");
}
if (!empty($postcodes)) {
$this->db->where('`postcode` in (' . $postcodes . ')');
$this->db->where("1 order by ", "FIND_IN_SET(`postcode`,'" . $postcodes . "')", false);
}
$query = $this->db->get('workshops', $limit, $start);
echo $this->db->last_query();
die();
return $query->result_array();
}
Выход:
SELECT *
FROM (`workshops`)
INNER JOIN `workshop_brand` ON `workshops`.`id` = `workshop_brand`.`w_id`
WHERE `workshops`.`status` = 1
AND `postcode` IN (
2530
,2500
,2502
,2505
,2506
,2517
,2518
,2519
,2520
,2522
,2525
,2526
,2527
,2528
,2529
,2533
,2535
,2560
,2574
,2575
,2576
,2577
)
AND 1
ORDER BY FIND_IN_SET(`postcode`, '2530,2500,2502,2505,2506,2517,2518,2519,2520,2522,2525,2526,2527,2528,2529,2533,2535,2560,2574,2575,2576,2577')
OR `brand_id` = '6'
GROUP BY `workshops`.`id`
Подробнее здесь: https://stackoverflow.com/questions/227 ... t-of-white
Мобильная версия