Используя условие МЕЖДУ В ГДЕ
Мне нужна следующая функция для выбора отелей с размещением между определенными $minvalue
и $maxvalue
. Каким будет лучший способ сделать это?
function gethotels($state_id,$city,$accommodation,$minvalue,$maxvalue,$limit,$pgoffset)
{
$this->db->limit($limit, $pgoffset);
$this->db->order_by("id", "desc");
$this->db->where('state_id',$state_id);
$this->db->where('city',$city);
// This one should become a between selector
$this->db->where($accommodation,$minvalue);
$result_hotels = $this->db->get('hotels');
return $result_hotels->result();
}
Ответы
Ответ 1
Вы должны использовать
$this->db->where('$accommodation >=', minvalue);
$this->db->where('$accommodation <=', maxvalue);
Я не уверен в синтаксисе, поэтому прошу прощения, если это не так.
В любом случае BETWEEN
реализуется с использованием >= min && <= макс
.
Это смысл моего примера.
Редакция:
Глядя на эта ссылка Я думаю, вы могли бы написать:
$this->db->where("$accommodation BETWEEN $minvalue AND $maxvalue");
Ответ 2
В Codeigniter Это простой способ проверить две записи даты...
$start_date='2016-01-01';
$end_date='2016-01-31';
$this->db->where('date BETWEEN "'. date('Y-m-d', strtotime($start_date)). '" and "'. date('Y-m-d', strtotime($end_date)).'"');
Ответ 3
Звучит правильно, но некоторые проблемы могут создать выполнение этого запроса:
Я бы предложил:
$this->db->where( "$accommodation BETWEEN $minvalue AND $maxvalue", NULL, FALSE );
Ответ 4
Возможно, вы также столкнетесь с сообщением об ошибке. "Столкновение типа операнда: дата несовместима с int.
Используйте одинарные кавычки вокруг дат. Например: $this->db->where("$accommodation BETWEEN '$minvalue' AND '$maxvalue'");
Ответ 5
Я думаю, что мы можем написать так: $this-> db-> where ('Accommodation> =', minvalue); $this-> db-> где ('размещение <=', максимальное значение);
//без знака доллара ($) у меня работает :)