خطا CDbCommand

[right]

سلام

دوتا جدول دارم جدول گروه و جدول عکس

و برای نمایش عکس ها از گرید استفاده میکنم

توی تابع سرچ کدهای زیرو نوشتم ولی خطا میده فک کنم خطاش مربوط به کلید خارجی میشه

ولی بین دوتا جدول ارتباط بر قراره وقتی کد زیرو بهش اضافه میکنم بهم خطا میده

[/right]




CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in order clause is ambiguous. The SQL statement executed was: SELECT `t`.`id` AS `t0_c0`, `t`.`id_user` AS `t0_c1`, `t`.`data` AS `t0_c2`, `t`.`name` AS `t0_c3`, `t`.`flag` AS `t0_c4`, `t`.`id_group` AS `t0_c5`, `idGroup`.`id` AS `t1_c0`, `idGroup`.`id_user` AS `t1_c1`, `idGroup`.`name` AS `t1_c2` FROM `news_file_upload` `t` LEFT OUTER JOIN `news_group` `idGroup` ON (`t`.`id_group`=`idGroup`.`id`) ORDER BY id DESC LIMIT 5






$criteria->with = array('idGroup');

$criteria->addSearchCondition('idGroup.name', $this->title_group);







	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(

			'idUser' => array(self::BELONGS_TO, 'User', 'id_user'),

		                 'idGroup' => array(self::BELONGS_TO, 'Group', 'id_group'),

		);

	}


	/**

	 * @return array customized attribute labels (name=>label)

	 */

	public function attributeLabels()

	{

		return array(

			'id' => 'ID',

			'id_user' => 'Id User',

			'data' => 'Data',

			'name' => 'Name',

			'flag' => 'Flag',

			'id_group' => 'Id Group',

		);

	}


	/**

	 * Retrieves a list of models based on the current search/filter conditions.

	 *

	 * Typical usecase:

	 * - Initialize the model fields with values from filter form.

	 * - Execute this method to get CActiveDataProvider instance which will filter

	 * models according to data in model fields.

	 * - Pass data provider to CGridView, CListView or any similar widget.

	 *

	 * @return CActiveDataProvider the data provider that can return the models

	 * based on the search/filter conditions.

	 */

	public function search()

	{

		// @todo Please modify the following code to remove attributes that should not be searched.


		$criteria=new CDbCriteria;


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

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

		$criteria->compare('data',$this->data,true);

		$criteria->compare('name',$this->name,true);

		 $criteria->with = array('idGroup');

                                        $criteria->addSearchCondition('idGroup.name', $this->title_group);


		return new CActiveDataProvider($this, array(

		'criteria'=>$criteria,'pagination'=>array(  'pageSize'=>5,),

                                        'sort'=>array(   'defaultOrder'=>'id DESC ',),

		));

	}



[font="Tahoma"][rtl]سلام

مشکل این هست که هر دو جدول یک ستون به نام id دارند، و شما در قسمتی از کوئری دارید مقدار id رو بار مقداری که از سمت کاربر میاد مقایسه میکنید. دیتابیس نمیدونه باید مقدار id کدوم یک از جداول رو برای مقایسه استفاده کنه

برای ستون name هم این مشکل پیش میاد، اون رو هم باید اصلاح کرد

مقایسه های تابع search رو اینجوری تغییر بدید:[/rtl][/font]




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

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


  return new CActiveDataProvider($this, array(

                'criteria'=>$criteria,'pagination'=>array(  'pageSize'=>5,),

                                        'sort'=>array(   'defaultOrder'=>'t.id DESC ',),

                ));



[font="Tahoma"][rtl]اینجوری t.id و t.name به ستون های جدول user اشاره می کنند[/rtl][/font]

[right]

ممنون که جواب دادین ولی هیچ تغییری ایجاد نشد همون خطای قبلی رو میده

این t

باید تعریف بشه یا از حروف کلیدی خود فریم ورک هست

توی ارتباط من جدول عکس رو با جدول گروه میخوام ارتباط داشته باشه

[/right]

[right]ممنون درست شد

من مرتب سازی نزاشته بودم

که وقتی به اونم اضافه کردم درست شد[/right]

[right]

مشکل حل شد ولی فقط فیلتری که برای

گروه ها هست عمل میکنه بقیه کار نمیکنن

[/right]

[font="Tahoma"][rtl]کار نکردن فیلتر ها ارتباطی با مشکل اول نداره. لطفا کد گریدویو و کد تابع rules در مدل را هم بگذارید تا بهتر بشه کمک کرد[/rtl][/font]

[right]

فقط فیلتر برای گروه ها کار میکنه برای بقیه کار نمیکنه

وقتی هم برای گروه با یکی از دیگه ستون فیلتر انجام نمیشه و خطا میده

[/right]




$this->widget('zii.widgets.grid.CGridView', array(

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

    'filter'=>$model,

    'id'=>'grid_news',

     'pager'=>array(

        'header'=>'',

        'prevPageLabel'=>'<<',

        'nextPageLabel'=>'>>',

        'firstPageLabel'=>'اولین',

        'lastPageLabel'=>'اخرین',


),

  //  'pager' => array('cssFile' => Yii::app()->request->baseUrl.'js/jquery-ui-1.8.13.custom.css'),

    'summaryText' => "{start} - {end} تعداد کل  {count}",

     'emptyText'=>'نتیجه ای یافت نشد',

      'columns' => array(

        array(

           

                'header'=>'عملیات  ', 

                'class' => 'CButtonColumn',

                'template' => '{delete}',

                'buttons' => array(

                'update' => array(

                     //   'url'=>'Yii::app()->createUrl("news/update", array("id"=>base64_encode(base64_encode($data->id))))' ,

                      'options'=>array('title'=>'ویرایش'),

                   'url'=>'Yii::app()->createUrl("group/update", array("id"=>base64_encode(base64_encode( $data->id))))',

               ),

               

                'delete'=>array(

                    'options'=>array('title'=>'حذف'),

                    'afterDelete'=>'function(link,success,data){alert("success");}',

                     'url'=>'Yii::app()->createUrl("fileupload/delete", array("id"=>base64_encode(base64_encode($data->id))))' ,

                       'click'=>"function(){

                            if(!confirm('قصد حذف این مورد را دارید؟')) return false;

                        $.fn.yiiGridView.update('grid_news', { 

                      


                            type:'POST',

                            dataType: 'json',

                                    url:$(this).attr('href'),

                                    success:function(data) {//alert(data);

                                   $.fn.yiiGridView.update('grid_news');

                                  

                                        }

                                })

                                return false;

                              }

                            ",      

             

                   ) ,),),

           array(

            'name' => 'id_group',

            'value'=>'$data->idGroup->name', 

         'filter' => CHtml::activeTextField($model, 'id_group'),

            'htmlOptions'=>array('style'=>'text-align: center ;  padding-right:15px;width:20px'),

            ),

          array(

            'name' => 'data',

            'type' => 'raw',

            'htmlOptions'=>array('style'=>'text-align: center ;  padding-right:15px;width:20px'),

            ),

          array(

            'name' => 'name',

            'value'=>  'CHtml::image(Yii::app()->request->baseurl."/images/photo/".$data->name , "$data->name",array("style"=>"border-radius:5px 5px 0px 0px;height:100%;width:100%"))',

            'type' => 'raw',

            'htmlOptions'=>array('style'=>'height:200px;width:200px'),

            ),

        


        

          

     )));

         






public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('id_user, data, name, flag, id_group', 'required'),

			array('id_user, flag, id_group', 'numerical', 'integerOnly'=>true),

			array('data', 'length', 'max'=>20),

			array('name', 'length', 'max'=>200),

			// The following rule is used by search().

			// @todo Please remove those attributes that should not be searched.

			array('title_group,id, id_user, data, name, flag, id_group', '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(

			'idUser' => array(self::BELONGS_TO, 'User', 'id_user'),

		                 'idGroup' => array(self::BELONGS_TO, 'Group', 'id_group'),

		);

	}


	/**

	 * @return array customized attribute labels (name=>label)

	 */

	public function attributeLabels()

	{

		return array(

			'id' => 'ID',

			'id_user' => 'Id User',

			'data' => 'تاریخ انتشار',

			'name' => 'فایل مورد نظر ',

			'flag' => 'Flag',

			'id_group' => 'نام گروه',

		);

	}


	public function search()

	{

		// @todo Please modify the following code to remove attributes that should not be searched.


		$criteria=new CDbCriteria;


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

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

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

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

                                       

                                        $criteria->condition = 'flag =1 ';

                                        $criteria->with = array('idGroup');

                                        

                                        $criteria->addSearchCondition('idGroup.name', $this->id_group);

		return new CActiveDataProvider($this, array(

		'criteria'=>$criteria,'pagination'=>array(  'pageSize'=>5,),

                                        'sort'=>array(   'defaultOrder'=>'t.id DESC ',),

		));

	}



[font="Tahoma"][rtl]اینجور که به نظر میاد گرید شما فقط ۳ ستون داره درسته؟ ستون گروه ها که فیلترش داره کار میکنه، ستون name هم که انگار عکس رو نشون میده و نیازی به فیلتر نداره. ستون data باقی میمونه فقط، چه نوع داده ای در این فیلد قرار میگیره؟کد به نظر نمیرسه مشکلی داشته باشه، منظورتون از این جمله چی بود:

دقیقا چه وقتی خطا میده؟ متن خطا رو هم اینجا کپی کنید[/rtl][/font]

[right]

ببخشید دیر جواب میدم یه کاری پیش امد نتونستم بیام

چهار تا ستون هست اخرش نام فایل هست

برای دیتا هم از نوع

varchar

به تعداد 20 تا گرفتم

[/right]




    array(

            'name' => 'name',

            'type' => 'raw',

            'htmlOptions'=>array('style'=>'height:200px;width:200px'),

            ),