relasi di active record ?

halo…

aku ada tabel seperti ini :

product


product_id

model

product_descrition


product_id

language_id

description

product_to_category


product_id

category_id

category


category_id

image

category_description


category_id

description

aku ingin dapat data seperti ini

product.product_id,product.model, product_description.description,category_description.description

dan aku sudah buat relation di activerecordnya:

product:




public function relations(){

                return array(

                        'deskripsi'=>array(self::HAS_MANY,'TProductDescription','product_id'),

                );

        }



ProductDescription




public function relations()

        {

                // NOTE: you may need to adjust the relation name and the related

                // class name for the relations automatically generated below.

                return array(

                        'product'=>array(self::BELONGS_TO,'TProduct','product_id'),

                        'category'=>array(self::MANY_MANY,'TCategory','product_to_category(product_id,category_id)'),

                );

        }






and this code to get data:




$provider = new CActiveDataProvider('TProductDescription',                                              

        array(

                'criteria'=>array(

                        'with'=>array('product','category'),

                        'select'=>'*',

                        'condition'=>'t.language_id=1',

                )

        )

);




but get error:




The relation "category" in active record class "TProductDescription" is specified with an incomplete foreign key. The foreign key must consist of columns referencing both joining tables



dan kurang lebih kalau sintax sql manualnya seperti ini:




select 

b.product_id,

b.model,

a.description,

d.name as ket

From product_description as a

left join product as b

on a.product_id = b.product_id

left join product_to_category as c

on b.product_id = c.product_id

left join category_description as d

on c.category_id = d.category_id

WHERE a.language_id = 1



ada yang bisa bantu ?

thanks

coba ini


$criteria->select='execution_date,topik,m.name as id_media_seller,a.name as id_advertiser,p.name as id_product_category,bt.name as group_id,price';

$criteria->join='JOIN tbl_bts_group bt ON t.group_id = bt.id';

$criteria->join.=' JOIN tbl_media_seller m ON t.id_media_seller = m.id';

$criteria->join.=' JOIN tbl_advertiser a ON t.id_advertiser = a.id';

$criteria->join.=' JOIN tbl_product_category p ON t.id_product_category = p.id';

$criteria->addCondition('m.id=t.id_media_seller and a.id=t.id_advertiser and p.id=t.id_product_category and bt.id=t.group_id');

$dataProvider=new CActiveDataProvider('BatchReport',array(

			'criteria'=>$criteria,

			'pagination'=>array(

				'pageSize'=>30,

			),

		));

tapi saya tidak pakai fungsi relasi di model.

semoga bisa mambantu

btw aku pakai model gan…

kalau menggunakan sql tidak ada masalah.

tapi makasih untuk share codenya.