PDA

View Full Version : خطای CDbException



hosein123
چهارشنبه 15 بهمن 1393, 18:03 عصر
سلام
دوتا جدول دارم یکی گروه و دیگری عکس برای نمایش عکس ها از گرید استفاده میکنم ولی وقتی کد زیر را اضافه میکنم با خطا مواجع مبیشم فک کنم مربوط به کلید خارجی باشه در صورتی که ازتباط بین دوتا جدول برقرار هست؟


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 ',),
));
}



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);

MMSHFE
پنج شنبه 16 بهمن 1393, 09:07 صبح
فیلد id دوتا دارین. باید مشخص کنید کدوم id رو میخواین. خط اول بعد از ایجاد CDbCriteria رو اینطوری عوض کنید:

$criteria->compare('t.id', $this->id);
توی ارتباطها در Yii به جدول اصلی با شناسه t و به جدول وابسته (که با with معرفی میکنین) با اسم همون جدول وابسته میتونین دسترسی پیدا کنین.

hosein123
جمعه 17 بهمن 1393, 19:26 عصر
فیلد id دوتا دارین. باید مشخص کنید کدوم id رو میخواین. خط اول بعد از ایجاد CDbCriteria رو اینطوری عوض کنید:

$criteria->compare('t.id', $this->id);
توی ارتباطها در Yii به جدول اصلی با شناسه t و به جدول وابسته (که با with معرفی میکنین) با اسم همون جدول وابسته میتونین دسترسی پیدا کنین.

ممنون درست شد ولی چرا فیلترها کار نمیکنن برای اون هم باید تغییراتی ایجاد کنم

MMSHFE
جمعه 17 بهمن 1393, 21:52 عصر
کد فیلترتون رو بگذارین. همچنین متد filters

hosein123
شنبه 18 بهمن 1393, 00:21 صبح
کد فیلترتون رو بگذارین. همچنین متد filters



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




$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'),
),





)));