2010-06-06 6 views
3

Je dirigeais une requête avec Active Record dans un modal de mon application CodeIgniter, la requête ressemble à ceci,CodeIgniter enregistrement actif et MySQL

public function selectAllJobs() 
{ 
    $this->db->select('*') 
      ->from('job_listing') 
      ->join('job_listing_has_employer_details', 'job_listing_has_employer_details.employer_details_id = job_listing.id', 'left'); 
      //->join('employer_details', 'employer_details.users_id = job_listing_has_employer_details.employer_details_id'); 

    $query = $this->db->get(); 
    return $query->result_array(); 
} 

Ce retourne un tableau qui ressemble à ceci,

[0]=> 
    array(13) { 
    ["id"]=> 
    string(1) "1" 
    ["job_titles_id"]=> 
    string(1) "1" 
    ["location"]=> 
    string(12) "Huddersfield" 
    ["location_postcode"]=> 
    string(7) "HD3 4AG" 
    ["basic_salary"]=> 
    string(19) "£20,000 - £25,000" 
    ["bonus"]=> 
    string(12) "php, html, j" 
    ["benefits"]=> 
    string(11) "Compnay Car" 
    ["key_skills"]=> 
    string(1) "1" 
    ["retrain_position"]=> 
    string(3) "YES" 
    ["summary"]=> 
    string(73) "Lorem Ipsum is simply dummy text of the printing and typesetting industry" 
    ["description"]=> 
    string(73) "Lorem Ipsum is simply dummy text of the printing and typesetting industry" 
    ["job_listing_id"]=> 
    NULL 
    ["employer_details_id"]=> 
    NULL 
    } 
} 

le job_listing_id et le retour employer_details_id comme NULL si je lance le SQL dans phpMyAdmin je reçois ensemble des résultats, la requête i est en cours d'exécution dans phpmyadmin,

SELECT * 
FROM (
`job_listing` 
) 
LEFT JOIN `job_listing_has_employer_details` ON `job_listing_has_employer_details`.`employer_details_id` 
LIMIT 0 , 30 

Y at-il une raison pour laquelle j'obtiens des résultats différents?

+0

C'est bizarre ... Avez-vous essayé return $ query-> result(); au lieu de $ query-> result_array(), pour voir si la version d'objet des résultats présente le même problème? –

Répondre

3

Exécutez $ this-> db-> last_query() et vérifiez la différence. C'est un outil de débogage très utile.

Bien sûr, la limite aura un effet, mais j'ignore cela.

Il semble dans votre requête dans phpmyadmin, votre 'ON' n'a pas une seconde partie. Je pense que votre requête dans phpMyAdmin devrait être:

SELECT * 
FROM (
`job_listing` 
) 
LEFT JOIN `job_listing_has_employer_details` ON `job_listing_has_employer_details`.`employer_details_id` = = `job_listing`.`id` 

Vous devez utiliser result_array, malgré ce que dit l'autre personne.

Questions connexes