Yii Framework Forum: CActiveDataProvider problem - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

CActiveDataProvider problem Rate Topic: -----

#1 User is offline   echo66 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 66
  • Joined: 06-May 10

Posted 04 June 2010 - 11:26 PM

Hi.

I'm trying to feed a CGridView with data, using a CActiveDataProvider. Here is my code:


<?php

class CommunityUser extends CActiveRecord
{
	/**
	 * The followings are the available columns in table 'community_user':
	 * @var integer $user_id
	 * @var integer $community_id
	 * @var integer $is_suspended
	 * @var integer $can_invite_users
	 * @var integer $can_manage_objects
	 * @var integer $can_manage_templates
	 * @var integer $can_deactivate_community
	 * @var integer $can_manage_members
	 * @var integer $can_close_community
	 * @var integer $can_manage_requests
	 */

	/**
	 * Returns the static model of the specified AR class.
	 * @return CommunityUser 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 'community_user';
	}

	/**
	 * @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('user_id, community_id', 'required'),
			array('user_id, community_id, is_suspended, can_invite_users, can_manage_objects, can_manage_templates, can_deactivate_community, can_manage_members, can_close_community, can_manage_requests', 'numerical', 'integerOnly'=>true),
			// The following rule is used by search().
			// Please remove those attributes that should not be searched.
			array('user_id, community_id, is_suspended, can_invite_users, can_manage_objects, can_manage_templates, can_deactivate_community, can_manage_members, can_close_community, can_manage_requests', '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(
			'user' => array(self::BELONGS_TO, 'User', 'user_id'),
			'community' => array(self::BELONGS_TO, 'Community', 'community_id'),
			
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'user_id' => 'User',
			'community_id' => 'Community',
			'is_suspended' => 'Is Suspended',
			'can_invite_users' => 'Can Invite Users',
			'can_manage_objects' => 'Can Manage Objects',
			'can_manage_templates' => 'Can Manage Templates',
			'can_deactivate_community' => 'Can Deactivate Community',
			'can_manage_members' => 'Can Manage Members',
			'can_close_community' => 'Can Close Community',
			'can_manage_requests' => 'Can Manage Requests',
		);
	}

	/**
	 * 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('user_id',$this->user_id);

		$criteria->compare('community_id',$this->community_id);

		$criteria->compare('is_suspended',$this->is_suspended);

		$criteria->compare('can_invite_users',$this->can_invite_users);

		$criteria->compare('can_manage_objects',$this->can_manage_objects);

		$criteria->compare('can_manage_templates',$this->can_manage_templates);

		$criteria->compare('can_deactivate_community',$this->can_deactivate_community);

		$criteria->compare('can_manage_members',$this->can_manage_members);

		$criteria->compare('can_close_community',$this->can_close_community);

		$criteria->compare('can_manage_requests',$this->can_manage_requests);
		
//		$criteria->compare('user.username',$this->user_id);
//		
//		$criteria->compare('user.name',$this->user_id);
//		
//		$criteria->compare('user.photo',$this->user_id);
		
		//$criteria->with = 'user';

		return new CActiveDataProvider('CommunityUser', array(
			'criteria'=>$criteria,
		));
	}
	
	
	public function searchPerCommunity($communityId)
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('t.user_id',$this->user_id);

		$criteria->compare('t.community_id',$communityId);

		$criteria->compare('t.is_suspended',$this->is_suspended);

		$criteria->compare('t.can_invite_users',$this->can_invite_users);

		$criteria->compare('t.can_manage_objects',$this->can_manage_objects);

//		$criteria->compare('t.can_manage_templates',$this->can_manage_templates);
//
//		$criteria->compare('t.can_deactivate_community',$this->can_deactivate_community);
//
//		$criteria->compare('t.can_manage_members',$this->can_manage_members);
//
//		$criteria->compare('t.can_close_community',$this->can_close_community);
//
		$criteria->compare('t.can_manage_requests',$this->can_manage_requests);
		
//		$criteria->compare('user.username',$this->user_id);
//		
//		$criteria->compare('user.name',$this->user_id);
//		
//		$criteria->compare('user.photo',$this->user_id);
		
		$criteria->with = 'user';

		return new CActiveDataProvider('CommunityUser', array(
			'criteria'=>$criteria,
		));
	}
	
	
	
	
	public function temp($communityId)
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('t.community_id',$communityId);
		
		$criteria->compare('user.username',$this->user_id);
//		
//		$criteria->compare('user.name',$this->user_id);
//		
//		$criteria->compare('user.photo',$this->user_id);
		
		$criteria->with = 'user';

		return new CActiveDataProvider('CommunityUser', array(
			'criteria'=>$criteria,
		));
	}
	
	
	
	public function getYesNo($field){
		$val = $this->getAttribute($field);
		if($val == 1)
			return "Sim";
		else
			return "Não";
	}
}






my view
<?php
	if($isMember){
		$this->widget('zii.widgets.grid.CGridView', array(
			'id'=>'user-grid',
			'dataProvider'=>$dataProvider->search(),
			'filter'=>$dataProvider,
			'columns'=>array(

				array(
					'name'=>'user_id',
					'value'=>'$data->user_id',
				),
			),
		));
	}
?>


The problem is that the CActiveDataProvider i'm using isn't returning any records at all!!! The only way i can get the records is by comenting all these lines:

//		$criteria->compare('t.can_manage_templates',$this->can_manage_templates);
//
//		$criteria->compare('t.can_deactivate_community',$this->can_deactivate_community);
//
//		$criteria->compare('t.can_manage_members',$this->can_manage_members);
//
//		$criteria->compare('t.can_close_community',$this->can_close_community);
//
//		$criteria->compare('t.can_manage_requests',$this->can_manage_requests);


but...what the hell? why is this happening? :(

Thanks
0

#2 User is offline   echo66 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 66
  • Joined: 06-May 10

Posted 04 June 2010 - 11:35 PM

by the way, this is the table schema for community_user

CREATE TABLE `community_user` (
  `user_id` int(11) NOT NULL,
  `community_id` int(11) NOT NULL,
  `is_suspended` tinyint(1) DEFAULT '0',
  `can_invite_users` tinyint(1) DEFAULT '1',
  `can_manage_objects` tinyint(1) DEFAULT '1',
  `can_manage_templates` tinyint(1) DEFAULT '0',
  `can_deactivate_community` tinyint(1) DEFAULT '0',
  `can_manage_members` tinyint(1) DEFAULT '0',
  `can_close_community` tinyint(1) DEFAULT '0',
  `can_manage_requests` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`user_id`,`community_id`),
  KEY `community_id` (`community_id`),
  CONSTRAINT `community_user_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE,
  CONSTRAINT `community_user_ibfk_2` FOREIGN KEY (`community_id`) REFERENCES `community` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB;

0

#3 User is offline   echo66 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 66
  • Joined: 06-May 10

Posted 05 June 2010 - 07:39 AM

hmmm anyone????
0

#4 User is offline   Maurizio Domba Cerin 

  • Yii - Yesss It Is !!!
  • Yii
  • Group: Yii Dev Team
  • Posts: 4,346
  • Joined: 12-October 09
  • Location:Croatia

Posted 05 June 2010 - 01:48 PM

those fields have default values and the search is performed with those values...

in the controler where you have $model=new <yourmodel>;
after that just set all fields with default values to empty... like

$model->can_manage_templates="";
$model->can_deactivate_community="";

Find more about me.... btw. Do you know your WAN IP?
1

#5 User is offline   echo66 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 66
  • Joined: 06-May 10

Posted 05 June 2010 - 06:28 PM

Thanks!!! ;D
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users