2013-11-29 4 views
2

Я присоединяюсь к таблице page_content с тем же и после этого обе имеют столбец с именем sef_url Следующий код возвращает ошибку. Есть ли возможность получить использование 'ALIAS_NAME' АС внутри CDbCriteria->selectYii CDbCriteria select with AS alias

$criteria=new CDbCriteria; 
$criteria->alias = 'p'; 
$criteria->select = array('p.sef_url, p.date_last_modified, pc.sef_url AS parent_sef_url'); 
$criteria->join = 'LEFT JOIN page_content pc ON p.parent_pageid = pc.pageid'; 

$criteria->condition = 'p.published=:published AND p.sitemap_index=:sitemap_index'; 
$criteria->params = array(':published'=>1,':sitemap_index'=>0); 

$result_arr = parent::model()->findAll($criteria); 

echo '<pre>'; 
print_r($result_arr); 

foreach($result_arr as $row) { 
    echo $row['parent_sef_url']; 
} 
+0

Что какая ошибка вы получаете? Попробуйте определить public $ parent_sef_url в вашей модели page_content. Я думаю, это похоже на http://www.yiiframework.com/forum/index.php/topic/7118-select-as-newcolumn-with-cdbcriteria/ – apoq

+0

Моя ошибка: это недопустимый код '$ criteria-> select = array (..., pc.sef_url AS parent_sef_url '); 'Однако мне нужен способ однозначно идентифицировать эти два столбца' sef_url' – inckka

ответ

0

Также следует определить соотношение:

public function relations() 
{ 
    return array(
     'parentPageContent'=>array(self::BELONGS_TO, 'PageItem', 'parent_pageid'), 
    ); 
} 

После вы можете сделать это:

$pageContents = PageContent::model()->with('parentPageContent')->findAllByAttributes(array(':published'=>1,':sitemap_index'=>0)); 
foreach($pageContents as $pageContent){ 
    echo $pageContent->parentPageContent->sef_url; 
} 
Смежные вопросы