PDA

View Full Version : اضافه کردن یک ستون به gridView



desatir7316
دوشنبه 11 فروردین 1393, 18:22 عصر
سلام دوستان
می خوام فیلدی به جای فیلد کلید خارجی فعلی به gridView اضافه کنم که بتونه اسم عناصر موجود توی جدول حاوی کلید اصلی رو نشون بده و بتونه مثل سایر عناصر gridView بر اساسش sort کرد و جستجو کرد
اضافه کردن فیلد و اینارو می دونم فقط اون قسمت گرفتن اطلاعات مطابق با فیلد موجود توی جدول اصلی و جستجو و ... رو ممنون میشم راهنمایی کنید
ممنون

desatir7316
دوشنبه 11 فروردین 1393, 20:46 عصر
از طریق این لینک (http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/) درسش کردم
حالا مشکلی که پیدا کردم ، این کد دیگه اجرا نمی شه( که البته خودم قبلا اضافه کردم):


$criteria->condition='category_id=:categoryID';

$criteria->params=array(':categoryID'=>$_GET['category_id']);
با این هم عوضش کردم هیچ فرقی نکرد:


$criteria->compare('category_id', $_GET['category_id']);


این پیغام خطاش:
CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'category_id' in where clause is ambiguous. The SQL statement executed was: SELECT COUNT(DISTINCT `t`.`item_id`) FROM `tbl_item` `t` LEFT OUTER JOIN `tbl_category` `category` ON (`t`.`category_id`=`category`.`category_id`) WHERE (category_id LIKE :ycp0)

desatir7316
دوشنبه 11 فروردین 1393, 21:02 عصر
درست شد


$criteria->compare('category_id', $_GET['category_id'],true);
عوض شد با این:

$criteria->compare('t.category_id', $_GET['category_id'],true);
یعنی جدول category_id رو مشخص کردم، بیچاره قاطیشون کرده بود
حالا gridview فقط با url داره کار می کنه(برای این فیلد منظورمه) چیکارش کنم که فقط تو موقع load صفحه با url باشه، دیگه ولکن باشه
بعد چکار کنم که موقع سرچ اگه * بزنی همه رو نشون بده
ممنون

desatir7316
دوشنبه 11 فروردین 1393, 21:12 عصر
درست شد،نمی دونم چرا تا سوالمو اینجا نپرسم درست نمی شه
این رو اضافه کردم:


public function actionAdmin()
{

$model=new Item('search');

$model->unsetAttributes(); // clear any default values

if(isset($_GET['category_id']))
...
$model->category_id = $_GET['category_id'];

البته به جای * از هیچی باید استفاده کنی که بهتر هم هست