RelationS in model

Hi,

How to join two table in relation in model…

For example,

I have table name user and userdetails I am writing User model in relation,

‘userdetails’=>array(self::HAS_ONE, ‘Userdetails’, ‘user_id’),

Its working fine,Now i want to join details table and review table in user model relation.

‘review’ => array(self::BELONGS_TO, ‘Review’, ‘’,‘on’=>(‘inner join details on review.details_id = details.bid_id’)),

cant work…

How to write relation for that?

If table ‘reviews’ has a key named ‘userdetail_id’ to join with ‘userdetails’ table,

you can solve your problem using ‘through’ attribute of relation.




'reviews'=>array(self::HAS_MANY,'Review',array('userdetail_id'=>'id'),'through'=>'userdetails'),



So from user model you can type:




$reviews = $userModel->reviews



Hi,

Thanx for ur reply how to use Search function?

I cant Show details in $this->widget(‘bootstrap.widgets.TbGridView’, $this->widget(‘bootstrap.widgets.TbGridView’, array(

'id'=>'deposit-grid',


'dataProvider'=>$model->search(),


'filter'=>$model,


'ajaxUpdate'=>false,


'columns'=>array(		


	'reviews',

What are you displaying? User table or Reviews table for a specific user?

What is $model? User or Review model?

check this out: http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/

Hi,

I want to Show details in review table,

public $reviews;

array(‘reviews’, ‘safe’, ‘on’=>‘search’),

$criteria->compare(‘reviews.review_name’,$this->reviews,true,‘OR’);

In view page i show,

array(

	'header'=>'Review name',


	'name'=>'reviews',


	'value'=>'$data->reviews->review_name'),

No data Showing why what’s s wrong in my code?

If you want to display reviews in a table you have to define $dataProvider.




$data = $modelUser->reviews;

$dataProvider = new CArrayDataProvider($data);


$this->widget('bootstrap.widgets.TbGridView', array(

'id'=>'deposit-grid',

'dataProvider'=>$dataProvider,

'filter'=>$model,

'ajaxUpdate'=>false,

'columns'=>array(

'field_of_review_model',




Hi,

If You dont mind plz explain me the below line,

$data = $modelUser->reviews;

$dataProvider = new CArrayDataProvider($data);

Where i put this above coding in model or view page…

You should put this code in Controller, that passes to View $dataProvider

In Controller:





function actionGrid()

{


...

...


$data = $modelUser->reviews;

$dataProvider = new CArrayDataProvider($data);


return array('grid', array('dataProvider' => $dataProvider));


}