Проверить доступность между двумя датами в поле дня

Привет, я пытаюсь получить продукты, доступные между двумя датами, через календарную таблицу, где у меня есть связь с продуктом.

Я помещаю данные моей таблицы:

введите здесь описание изображения

введите здесь описание изображения

Я понимаю, что если я делаю foreach и проверяю день за днем, я могу получить его, но я не хочу, чтобы это было так, я хочу сделать это правильно с помощью mysql.

Это запрос, который я сейчас выполняю, и он не дает ожидаемых результатов. это назовите мою страницу

    $start_date  = fecha_mysql_slash($this->input->get('start_date'));
    $end_date    = fecha_mysql_slash($this->input->get('end_date'));
    $calendars   = new Calendar();
    $calendars->select("*")
    ->where('day BETWEEN "'.$start_date.'" AND "'.$newEndDate.'" and availability > 0')
    ->include_related("producto",NULL,TRUE,TRUE)
    ->group_by("producto_id")
    ->get()->all;

Теперь я попытаюсь объяснить мне, через форму я получаю дату начала, а также дату окончания, поэтому мне нужно проверить таблицу календаря с даты начала до даты окончания, если существует в поле «день», а также Который доступность больше 0. ну с таким запросом не могу получить.

В настоящее время ошибки нет, проблема в том, что я получаю товары, когда в те даты, которые я указываю, не существует в таблице и поле «день»

Например, я делаю запрос через даты 2017-03-13 и 2017-03-25, проблема, которую я думаю, не понимаю, потому что я получаю идентификатор продукта, когда с 2017-03-13 нет записей для этих продукт.

Я надеюсь, что вы можете помочь мне,

большое спасибо.


person jcarlosweb    schedule 13.03.2017    source источник
comment
в чем ошибка? Попробуйте с этим. МЕЖДУ ('.$start_date.' И '.$newEndDate.') и   -  person Dil Dilshan    schedule 13.03.2017
comment
Я только что попробовал, и со скобками у меня не работает. В настоящее время ошибки нет, проблема в том, что я получаю продукты, когда в даты, которые я указываю, не существует в таблице и поле дня   -  person jcarlosweb    schedule 13.03.2017
comment
SELECT * from products WHERE (products.day BETWEEN '2017-03-12' И '2017-03-16') ‹‹ — это простой SQL-запрос, который получает результат. вы можете преобразовать его в активные записи, добавить проверку доступности и получить результат   -  person Malik Mudassar    schedule 13.03.2017
comment
Я только что смоделировал случай prntscr.com/ej9oh3, посмотрите   -  person Malik Mudassar    schedule 13.03.2017
comment
Например, я делаю запрос через даты 2017-03-13 и 2017-03-25, проблема, которую я думаю, не понимаю, потому что я получаю идентификатор продукта, когда с 2017-03-16 нет записей для этих продукт.   -  person jcarlosweb    schedule 13.03.2017
comment
измените на -›where(день МЕЖДУ '.$start_date.' И '.$newEndDate.' и доступность › 0)   -  person Dil Dilshan    schedule 13.03.2017
comment
нет. это «двойные кавычки», а не одиночные, где (день .... 0)   -  person Dil Dilshan    schedule 13.03.2017
comment
спасибо, но не работает   -  person jcarlosweb    schedule 13.03.2017


Ответы (1)


У тебя есть:

$end_date    = fecha_mysql_slash($this->input->get('end_date'));

и

->where('day BETWEEN "'.$start_date.'" AND "'.$newEndDate.'" and availability > 0')

$end_date — это переменная, отличная от $newEndDate. Измените $newEndDate на $end_date, и все должно работать.

person manassehkatz-Moving 2 Codidact    schedule 15.03.2017