2013-06-20 39 views
0

关系数据我已经创建了一个控制器,用于检索JSON格式的数据,我需要JSON格式的所有关系数据如何查询警予

我的数据库就像

TABLE_1 
_id category1 
1  fruit 
2  vegetable 

TABLE_2 
_id type 
1  winter 
2  summer 

TABLE_3 
_id  name cata_table1 cata_table2  
1  apple 1    2 

Here cata_table1 is foreign key to TABLE_1 and cata_table2 foreign key to TABLE_2 

$sql="SELECT * from TABLE_3"; 
$command=$connection->createCommand($sql); 
$row=$command->queryAll(); 

我应该怎么查询关系数据cata_table1领域的产值从表1和cata_table2从表2 让我结果查询输出具有'_id,名称,TABLE_1.category1,TABLE_2.type

model TABLE_3 

class TABLE_3 extends CActiveRecord 
{ 
public static function model($className=__CLASS__) 
{ 
    return parent::model($className); 
} 

public function tableName() 
{ 
    return 'TABLE_3'; 
} 
public function rules() 
{ 
    return array(
     array('_id,name,cata_table1,cata_table2', 'required'), 
     array('_id, name, cata_table1, cata_table2', 'safe', 'on'=>'search'), 
    ); 
} 
public function relations() 
{ 

} 
+0

u能使用关系发表您的模型TABLE_3我们可以做到这一点 – Ninad

+0

GII没有产生关系? – Ninad

回答

0

尝试在TABLE_3模型中,这

你可能有关系如图

public function relations() 
    { 
     'relation1' => array(self::BELONGS_TO, 'TABLE_1', '_id'), 
     'relation2' => array(self::BELONGS_TO, 'TABLE_2', '_id'), 
     } 

一样做ü在上面所做的那么做这样的事情

$sql="SELECT * from TABLE_3"; 
$command=$connection->createCommand($sql); 
$row=$command->queryAll(); 
$sample=array(); 
foreach($row as $key=>$value){ 
    $sample=array('id'=>$value->id,'name'=>$value->name,'name1'=>$value->relation1->category1,'name2'=>$value->relation2->type) 
} 

该编码后json

echo CJSON::encode($sample); 

检查一些语法可能是不完美的答案呃

+0

感谢这一点,但在foreach循环中无法访问关系,价值为$ –

+0

再次为您的TABLE_3模型生成模型并尝试使用由gii工具生成的关系名称 – Ninad

+0

如果$ value是特定记录的对象,则Relation应该可访问 – Ninad

0

创建关系就像Ninad在TABLE_3模型说:

public function relations(){ 
    'relation1' => array(self::BELONGS_TO, 'TABLE_1', '_id'), 
    'relation2' => array(self::BELONGS_TO, 'TABLE_2', '_id'), 
} 

在行动:

$results = array(); 
$models = TABLE_3::model()->with(array('table1','table2'))->findAll(); 
foreach($models as $model){ 
    $results[] = array($model->name, $model->relation1->category1, $model->relation2->type); 
} 
echo json_encode($results);