PHP头条
热点:

Yii2.0如何使用AR联表查询


第一种是查询构建器(Query Builder),第二种使用活动记录(Active Record),中文网对查询构建器讲的很详细,AR则说的很坑爹,下面贴出自己实践的方法,以供参考。

两个表

{{%article}} 和 {{%article_class}}

{{%article}} .article_class关联{{%article_class}}.id

1、要使用AR做关联查询,首先在models {Article} 中创建关联:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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}中使用,


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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}中使用


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?= GridView::widget([

  'dataProvider' => $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'],

  ],

]); ?>

www.phpzy.comtrue/php/27944.htmlTechArticleYii2.0如何使用AR联表查询 第一种是查询构建器(Query Builder),第二种使用活动记录(Active Record),中文网对查询构建器讲的很详细,AR则说的很坑爹,下面贴出自己实践的方法,以供参...

相关文章

    暂无相关文章

PHP之友评论

今天推荐