在我的用户表中,我有firstname和lastname等字段。 然后我使用Gii生成了一个视图。在我的索引页面中,我现在有姓名,姓氏,用户名等....
我将我的名字和姓氏连接起来作为姓名。
[
'attribute'=>'firstname',
'label' => 'Name',
'format' => 'raw',
'value' => function ($data) {
return Html::a($data->Name);
},
],
在模型
中public function getName()
{
return $this->firstname.' '.$this->lastname;
}
很遗憾,我无法使用姓氏搜索姓名字段... 我需要用firstname和lastname来过滤字段 任何人都可以帮助我.... 提前谢谢。
答案 0 :(得分:1)
这是你设置搜索模型的方式(我没有包含你的其他列,所以不要忘记那些)
您可以在此处找到更多信息:http://www.yiiframework.com/wiki/621/filter-sort-by-calculated-related-fields-in-gridview-yii-2-0/
class UserSearch extends User
{
public $name;
public function rules()
{
return [
[['name'], 'safe'],
// some other rules ...
];
}
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
public function search($params)
{
$query = User::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->sort->attributes['name'] = [
'asc' => ['lastname' => SORT_ASC, 'firstname' => SORT_ASC],
'desc' => ['lastname' => SORT_DESC, 'firstname' => SORT_DESC],
'label' => 'Name',
'default' => SORT_ASC
];
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
// grid filtering conditions
// some other filters ...
$query->andFilterWhere([
'or',
['like', 'lastname', $this->name],
['like', 'firstname', $this->name],
]);
return $dataProvider;
}
}
在你的gridview而不是
[
'attribute'=>'firstname',
// ...
],
只需使用
[
'attribute'=>'name',
],