我试图在一个CGridView界面中访问2个相关模型来搜索元素。但是一旦我将第二个表连接到第一个表,搜索就会停止工作并且不会过滤任何内容(网格不变)。我已经提到了许多链接,但我自己无法解决这个问题。
表是 - UserMaster(user_id,名称,状态,......) CustomerMaster(customer_id,user_id,account_number,...)
usermaster model content -
public $account_number;
public function rules()
{
return array(
array('name', 'required'),
array('account_number', 'safe'),
array('user_id, name,status, account_number', 'safe', 'on'=>'search'),
);
}
public function relations()
{
return array('customer_master' => array(self::HAS_ONE, 'CustomerMaster', 'user_id'),);
}
public function attributeLabels()
{
return array(
'user_id' => 'User',
'name' => 'Name',
'status' => 'Status',
'account_number' => 'Account Number',
);
}
public function search()
{
$criteria=new CDbCriteria;
$criteria->alias = 't';
$criteria->compare('t.user_id',$this->user_id);
$criteria->compare('t.name',$this->name,true);
$criteria->compare('t.status',$this->status);
$criteria->with = 'customer_master';
$criteria->condition = 't.user_type=2';
$criteria->together = true;
$criteria->compare('customer_master.user_id',$this->user_id,true);
if ($this->account_number){
$criteria->compare('customer_master.account_number',$this->account_number,true);
}
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination'=>array(
'pageSize'=>25),
'sort'=>array(
'defaultOrder'=>'t.user_id DESC',
),
));
}
customermaster model content-
public function relations()
{
return array(
'user_id' => array(self::BELONGS_TO, 'UserMaster', 'user_id'),
);
}
usermaster controller code -
public function actionAdmin()
{
$model=new UserMaster('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['UserMaster']))
$model->attributes=$_GET['UserMaster'];
$this->render('admin',array(
'model'=>$model,
));
}
admin.php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-master-grid',
'dataProvider'=>$model->search(),
//'filter'=>$model,
'columns'=>array(
array (
'name' => 'customer_master.account_number',
'header' => 'Account Number',
'type' => 'raw',
'value'=>'$data->customer_master->account_number',
),
'name',
'status',
array(
'class'=>'CButtonColumn',
),
),
));
通过加入上述2个模型,我可以按预期获得网格视图,但搜索不适用于所有字段。
有人请帮助我找出问题所在。我希望我已经清楚地解释了问题。
提前谢谢。答案 0 :(得分:0)
您检查过yii应用程序日志吗?您应该能够看到正在为此搜索生成和运行的SQL,然后在SQL前端(phpMyAdmin或您喜欢使用的任何内容)中手动运行它。
我认为错误在于你的两张桌子之间的连接......