我是这样做的
1. searchModel里面:
$query = Order::find()->from(['o' => Order::tableName()]);
$query->joinWith(['dcUser0 u', 'product0 p']);
2. Order model里面
public function getDcUser0()
{
return $this->hasOne(DcUser::className(), ['uid' => 'uid']);
}
public function getProduct0()
{
return $this->hasOne(Product::className(), ['product_id' => 'product_id'])->viaTable(OrderToProduct::tableName(), ['order_id' => 'order_id']);
}
表前缀:
1. class OrderSearch extends Order
2. Order model里面:
public static function tableName()
{
return '{{%order}}';
}
gii生成Order时候要选有表前缀
关联做好后 gridview写法:
[
'label' => '商品名',
'attribute' => 'product_name',
'format' => 'raw',
'value' => 'product0.name',
'filter' => $searchModel->product_list,
],
list
public static function getActiveDataProvider(){
return class_model::getActiveDataProvider(self::find(),5);
}
public function count($where_arg){
return self::find()->where($where_arg)->count();
}
public function all($where_arg){
return self::find()->where($where_arg)->all();
}