I am a yiibie, and i am stuck in a problem. I have made a file named ngopage.php
in my view file and i am able to get the data from my Ngo
table but I am unable to get the Picture
of the user who is writing any comment for an ngo
against a specific id of an ngo
. The picture of the user is in the profile
table and the reviews are coming from the userRateReviewNgos
table. I am also able to get the reviews but not getting the picture of the user. I tried the through
method in the relation function
of the userRateReviewNgos
model which gives an exception Property "CBelongsToRelation.through" is not defined.
Please help me with this. thank you.
This is the code for my UserRateReviewNgos model
<?php
/**
* This is the model class for table "user_rate_review_ngo".
*
* The followings are the available columns in table 'user_rate_review_ngo':
* @property integer $id
* @property integer $rate
* @property string $review
* @property integer $user_id
* @property integer $ngo_id
*
* The followings are the available model relations:
* @property Ngo $ngo
* @property User $user
*/
class UserRateReviewNgo extends CActiveRecord
{
/**
* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return UserRateReviewNgo the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'user_rate_review_ngo';
}
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('rate, review, user_id, ngo_id', 'required'),
array('rate, user_id, ngo_id', 'numerical', 'integerOnly'=>true),
array('review', 'length', 'max'=>500),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('id, rate, review, user_id, ngo_id', 'safe', 'on'=>'search'),
);
}
/**
* @return array relational rules.
*/
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(
'ngo' => array(self::BELONGS_TO, 'Ngo', 'ngo_id'),
'user' => array(self::BELONGS_TO, 'User', 'user_id'),
'profile' => array(self::BELONGS_TO, 'profile', 'id','through'=>'user'),
);// here i have user the through method for getting picture form profile table
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'id' => 'ID',
'rate' => 'Rate',
'review' => 'Review',
'user_id' => 'User',
'ngo_id' => 'Ngo',
);
}
/**
* Retrieves a list of models based on the current search/filter conditions.
* @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
*/
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('rate',$this->rate);
$criteria->compare('review',$this->review,true);
$criteria->compare('user_id',$this->user_id);
$criteria->compare('ngo_id',$this->ngo_id);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
}
This is the ngopage.php from view file
<div class="profile">
<div class="row" style="background-color:">
<div class="col-md-4">
<img src="<?php echo YII::app()->request->baseUrl;?>/img/<?php echo $model->image;?>" class="img-responsive"><br>
</div>
<div class="col-md-4">
<h2 class="profile-name" style="color:white;"><?php echo $model->ngo_name;?></h2>
<div class="rating">
<span class="glyphicon glyphicon-star 2x" aria-hidden="true"></span>
<span class="glyphicon glyphicon-star 2x" aria-hidden="true"></span>
<span class="glyphicon glyphicon-star 2x" aria-hidden="true"></span>
<span class="glyphicon glyphicon-star 2x" aria-hidden="true"></span>
<span class="glyphicon glyphicon-star 2x" aria-hidden="true"></span>
</div><!--rating ending here-->
<h3>Owner:</h3>
<p>Mr. Asad Abdul Jabbar</p>
<h3>Address:</h3>
<address>
<p> <?php echo $model->address;?><br></p>
</address>
<h3>Requirements:</h3>
<p>-Volunteers required for refugees settlement in Kashmir<br>-Cash for food and water of refugees<br>-Donations can be transferred via online banking, AC no.<em>12345</em></p>
<h3>Write Review</h3>
<textarea type="text" class="form-control" rows="3" cols="4" name="requirements" value=""></textarea><br>
<button class="btn btn-primary">Share</button>
</div>
</div><!--row ending here--><br>
</div><!--profile ending here--><br>
<div class="story-content" style="background-color:white;">
<div class="row">
<div class="col-md-8 col-md-offset-2 vol-stories">
<div class="media">
<div class="media-left">
<a href="user-profile.php">
<?php $modelnew=$model->userRateReviewNgos;
foreach($modelnew as $new)
{
?>
<img class="media-object" src="<?php echo YII::app()->request->baseUrl;?>/img/<?php echo $new->profile->picture;?>">
</a>
</div>
<div class="media-body"><strong><?php echo $new->user->username; ?></strong>
<p style="color:black;"><?php echo $new->review;?></p>
<?php }
?>
</div>
<button class="btn btn-primary btn-xs">Edit</button>
<button class="btn btn-primary btn-xs">Delete</button>
</div><!--Media ending here-->
</div>
</div><!--row ending here--><hr class="half">
</div>
For this i think you should use a has one relation