2
votes

Comment écrire un codeigniter de requête personnalisé

J'ai la requête suivante et son fonctionnement dans MySQL

$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')");

Mais si je convertis de manière Codeigniter, la requête ne fonctionne pas, comment puis-je écrire cette requête dans Codeigniter? J'ai essayé avec le code suivant mais affichant "Erreur de base de données"

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');

Où je me trompe? Merci d'avance


3 commentaires

Quelle erreur obtenez-vous?


@NageshKatke: j'obtiens "Erreur de base de données"


Avez-vous chargé votre base de données?


3 Réponses :


2
votes

vous pouvez vous reporter à cette page concernant le générateur de requêtes CI.

p> Sur la base de votre question, vous essayez de convertir la requête MySQL en constructeur de requêtes CI, n'est-ce pas? Essayons, en fonction de votre code, vous sélectionnez une donnée avec une condition, donc cela ressemble à ceci:

        $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();

En gros, cela retournera des données sur le type d'objet. Utilisez result_array () si vous souhaitez le convertir en tableau.

Si vous obtenez une erreur Database Error , vérifiez votre database.php sous application / config , vous devez configurer votre configuration de base de données par défaut . Vous pouvez consulter ici.

REMARQUE : N'oubliez pas de charger votre base de données comme d'habitude ou de la configurer sur autoload.php^

Voyons s'il y a une amélioration .


0 commentaires

0
votes

Il est facile d'écrire votre propre requête personnalisée dans Codeigniter, vous pouvez essayer ceci. Créez une fonction à l'intérieur de votre modèle avec comme ceci

$this->customModel->customQuery();

Chargez ce modèle dans le contrôleur et appelez maintenant cette fonction depuis votre contrôleur comme ceci!

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();
}

cela renverra le tableau de résultats. Merci


0 commentaires

0
votes

Dans votre modèle, créez une fonction

$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();
}

Dans votre contrôleur, chargez le même modèle et appelez la méthode ci-dessus

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


0 commentaires