Friday, January 13, 2012

Doctrine 1.2 / Zend


Im having trouble with doctrine generating the code for a query that has a umlaut in.




$q = Doctrine_Query::create()
->select('DISTINCT p.project_name, fqha.form_question_has_answer_request, fqha.form_question_has_answer_form_id, fqha.form_question_has_answer_user_id,
u.user_username, c.company_hall_no, c.company_type, c.company_company_name, c.company_country, c.company_stand_number,
c.company_image_file_1, pchu.project_company_has_user_project_id, pchu.project_company_has_user_user_id')
->from('Klarents_Model_ProjectCompanyHasUser pchu')
->innerJoin('pchu.Klarents_Model_Company c')
->innerJoin('pchu.Klarents_Model_Project p')
->innerJoin('pchu.Klarents_Model_User u')
->innerJoin('pchu.Klarents_Model_Form f')
->leftJoin('pchu.Klarents_Model_FormQuestionHasAnswer fqha ON fqha.form_question_has_answer_form_id = ' . $this->zone_form_id . ' AND fqha.form_question_has_answer_user_id = pchu.project_company_has_user_user_id');
$sql = '(f.form_template_name = "custom" AND pchu.project_company_has_user_garbage_collection = 0 AND pchu.project_company_has_user_project_id = ' .$input->projectid .')';
if ($input->keyword !== 'Search...') {
$sql .= 'AND (c.company_company_name LIKE "%' . 'Süddeutsche'/* (html_entity_decode($input->keyword)) */ . '%" OR
c.company_stand_number LIKE "%' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '%" OR
c.company_town_city LIKE "%' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '%" OR
c.company_county LIKE "%' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '%" OR
c.company_website LIKE "%' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '%" OR
c.company_address_1 LIKE "%' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '%" OR
c.company_address_2 LIKE "%' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '%" OR
c.company_address_3 LIKE "%' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '%" OR
c.company_hall_no LIKE "%' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '%" OR
c.company_postcode LIKE "%' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '%" OR
(fqha.form_question_has_answer_request REGEXP "' . 'Süddeutsche'/* mysql_escape_string(html_entity_decode($input->keyword)) */ . '"))';
}//var_dump($sql);die();
$q->Where($sql);
$file_uri = APPLICATION_PATH . '/../languages/29/messages.de.php';
if (file_exists($file_uri)) {
$countri = include($file_uri);
}
$this->view->countryTranslate = $countri;
if (strtolower($input->country) !== 'please select') {
$q->andWhere('LCASE(c.company_country) LIKE "%' . strtolower($input->country) . '%" '
. 'OR LCASE(c.company_country) LIKE "%' . ((strlen($input->country) <= 3) ? strtolower($countri[strtoupper($input->country)]) : strtolower($countri[ucwords($input->country)])) . '%"');
}
$q->orderBy(sprintf('%s %s',
(($input->sort == "") ? 'c.company_company_name' : str_replace('-', '_', $input->sort)),
(($input->dir == "") ? 'asc' : $input->dir))
);
$row_result = $q->fetchArray();



If the word 'Süddeutsche' is anyword containing an umlaut the query will show as null using Imind profiler in firefox (outputs the query string).



If its anything without an umlaut then theres no problem.



Any clue whats casuing this? I have been assuming its the characterset used with doctrine, but not sure to be honest..



Regards

No comments:

Post a Comment