Yii2的Gridview功能十分强大,我们通常用它来展示一张数据表的信息,可以通过对其model定义hasOne来关联到其他表中的字段来显示,但对于其他表的字段搜索应该怎么做呢?
例如,tiandi手上有两张表,一张订单表Order,字段信息如下:
另外有一张商户信息表Business,字段信息如下:
需要在Gridview里输入商户名称进行模糊查询匹配到的订单:
在订单表的model添加以下代码,来获取关联表商户的信息
public function getBusiness() { return $this->hasOne(Business::className(), ['id' => 'business_id']); }
打开订单表的SearchModel,添加一个字段变量,并在rules里,将该变量加进去。
class OrdersSearch extends Orders { public $business_cname; ....
在search方法里添加下面这一行。
$query->andFilterWhere(['like', 'business_cname', $this->business_cname]) ;
前台显示的地方用
'attribute' => 'customer_name', //没有实际意义了 'value' => 'business.business_cname', //model里hasOne对应的属性 'filter' => Html::activeTextInput($searchModel, 'business_cname', [ 'class' => 'form-control' ]),//business_cname为search里的参数
好了,刷新页面看下吧,很简单吧。
文章评分1次,平均分5.0:★★★★★
不翻一下日志,都差点忘了你,哈哈。
之前是热衷于到处串门,现在很少更新博客,也很少串门了,偶尔想起来点两下。
我也确实是这样,所以才很久没来。
学习来了哈。。