时时商务社区

标题: 详解Yii2.0使用AR联表查询实例 [打印本页]

作者: qz234    时间: 2018-2-14 05:25

            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实现联表查询加搜索分页的方法示例
            




    欢迎光临 时时商务社区 (http://bbs.4435.cn/) Powered by Discuz! X3.2