Как написать пользовательский запрос codeigniter - PullRequest
0 голосов
/ 04 февраля 2019

У меня следующий запрос, и он работает в MySQL

SELECT * FROM usr_booking 
WHERE shop_id ='1' 
AND services_dates='2019-01-02' 
AND (start_time BETWEEN '10:00' AND '11:00' OR end_time BETWEEN '10:00' AND '11:00');

Но если я конвертирую способом Codeigniter, тогда запрос не работает. Как мне написать этот запрос в Codeigniter?Я попытался с помощью следующего кода, но показывает «Ошибка базы данных»

$query=$this->db->query("SELECT * FROM usr_booking 
WHERE shop_id ='1' 
AND services_dates='2019-01-02'
AND (start_time BETWEEN '10:00' AND '11:00' OR end_time BETWEEN '10:00' AND '11:00')");

Где я ошибаюсь?Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Легко написать свой собственный запрос в Codeigniter, вы можете попробовать это.Создайте функцию внутри вашей модели следующим образом:

function customQuery()
{
    $query = $this->db->query("SELECT * FROM usr_booking WHERE shop_id ='1' AND services_dates='2019-01-02' AND (start_time BETWEEN '10:00' AND '11:00' OR end_time BETWEEN '10:00' AND '11:00')"); 
    return $query->result_array();
}

Загрузите эту модель в контроллер и теперь вызывайте эту функцию из вашего контроллера следующим образом!

$this->customModel->customQuery();

, это вернет массив результатов.Спасибо

0 голосов
/ 05 февраля 2019

В вашей модели создайте функцию

function customData($str)
{
   $query = $this->db->query($str); 
   return $query->result_array();
}

В вашем контроллере загрузите ту же модель и вызовите вышеуказанный метод

$querySTR = "SELECT * FROM usr_booking 
WHERE shop_id ='1' 
AND services_dates='2019-01-02' 
AND (start_time BETWEEN '10:00' AND '11:00' OR end_time BETWEEN '10:00' AND '11:00')";

$result = $this->model_name->customData($querySTR);
if($result){
 //Write your code
} else {
  echo 'Error Code: '.$this->db->_error_number().' -- Error Message: '.$this->db->_error_message();
}
0 голосов
/ 04 февраля 2019

Вы можете обратиться к этой странице , касающейся компоновщика запросов CI.

Основываясь на своем вопросе, вы пытаетесь преобразовать запрос MySQL в компоновщик запросов CI, верно?Давайте попробуем, на основе вашего кода вы выбираете данные с условием, поэтому это выглядит так:

        $this->db->select("*");
        $this->db->from("usr_booking ");
        $this->db->where("shop_id",1);
        $this->db->where("services_dates",'2019-01-02');
        $this->db->where("start_time" >= '10:00');
        $this->db->where("start_time" <= '11:00');
        $this->db->or_where("end_time" >= '10:00');
        $this->db->where("end_time" <= '11:00');
        $query = $this->db->get();

        return $query->result();

По сути, это вернет данные о типе объекта.Используйте result_array(), если хотите преобразовать его в массив.

Если вы получаете сообщение об ошибке Database Error, проверьте файл database.php в application / config Вы должны настроить конфигурацию базы данных по умолчанию .Вы можете сослаться на здесь.

ПРИМЕЧАНИЕ: Don't forget to load your database as always or set it on autoload.php

Позвольте мне посмотреть, есть ли улучшения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...