| 
 | 
 
 
            Yii2.0中使用联表查询有两种办法,第一种是查询构建器(Query Builder),第二种使用活动记录(Active Record),中文网对查询构建器讲的很详细,AR则说的很坑爹,下面贴出自己实践的方法,以供参考。 
两个表 
{{%article}} 和 {{%article_class}} 
{{%article}} .article_class关联{{%article_class}}.id 
1、要使用AR做关联查询,首先在models {Article} 中创建关联: 
class Article extends \yii\db\ActiveRecord  
{  
  //这里声明被关联字段  
  public $class_name;  
    
  /**  
   * @inheritdoc  
   */  
  public static function tableName()  
  {  
    return '{{%article}}';  
  }  
  ...  
 //关联 mysite_article_class 表  
  public function getArticleClass(){  
    /**  
    * 第一个参数为要关联的子表模型类名称,  
    * 第二个参数指定通过子表的 id 去关联主表的 article_class 字段  
    */  
    return $this->hasMany(ArticleClass::className(), ['id' => 'article_class']);  
  }   
    
}  
2、在controllers {ArticleController}中使用, 
public function actionIndex()  
  {    
    $article = new Article();  
    if(Yii: app->request->get('class')){  
      $query = Article::find()  
          ->joinWith('articleClass')  
          ->select(['{{%article}}.*,{{%article_class}}.class_name'])  
          ->where(['article_class' => Yii: app->request->get('class')]);  
      $dataProvider = new ActiveDataProvider([  
        'query' => $query,  
      ]);  
        
    }else{  
      $query = Article::find()  
          ->joinWith('articleClass')  
          ->select(['{{%article}}.*,{{%article_class}}.class_name']);  
      $dataProvider = new ActiveDataProvider([  
        'query' => $query,  
      ]);  
        
    }  
    return $this->render('index', [  
      'dataProvider' => $dataProvider,  
      'model' => $article,  
    ]);  
  }  
3、在view {GridView}中使用 
 $dataProvider,  
  'columns' => [  
    ['class' => 'yii\grid\SerialColumn'],  
    'id',  
    //'article_content:ntext',  
    [  
      'value'=>'class_name',  
      'label'=>'文章分类',  
    ],  
    'article_title',  
    'article_addtime:datetime',  
    // 'article_updatetime:datetime',  
    // 'article_author',  
    ['class' => 'yii\grid\ActionColumn'],  
  ],  
]); ?>  
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。 
             
             
您可能感兴趣的文章:Yii框架结合sphinx,Ajax实现搜索分页功能示例YII框架中搜索分页jQuery写法详解yii框架搜索分页modle写法yii2实现分页,带搜索的分页功能示例Yii 2.0实现联表查询加搜索分页的方法示例 
         |   
 
 
 
 |