21.Yii2.0框架多表关联一对多查询之性能优化--模型的使用

控制器里

功能:

通过分类,查分类下的所有文章

    //关联查询
    public function actionRelatesearch(){
        //关联查询
        //查询方法一(查一行) 一维数组下的值是obj
        $category = Category::findOne(1); //查分类表里的数据 abj
//        $categoryarr = $category->attributes; //获取某一行的分类结果里的对象属性,array
        //查文章里的cid等于2的 拿上面的结果 $categoryarr['cid']=2 作为本次查询的条件
//        $article = Article::find()->asArray()->where(['cid'=>$categoryarr['cid']])->all();

        //这里是取的是$category下的属性articles,
        //它会调用__get方法,会自动调用getArticles()方法
        //模型里可以不加all(),会自动调用all()方法
        //这里是用category作关系主表的,所以模型要写在Category模型里
        $articles = $category->articles; //效果同上面 $category->getArticles();
        dd($articles);
    }

模型里

<?php
namespace app\models;

use yii\db\ActiveRecord;

class Category extends ActiveRecord
{
    public function getArticles()
    {
//        return $this->hasMany(Article::className(),['cate_id'=>'cid'])->asArray()->all();
        //会自动调用all()方法
        return $this->hasMany(Article::className(),['cate_id'=>'cid'])->asArray();

    }
}

posted @ 2018-09-07 07:40  HaimaBlog  阅读(804)  评论(0编辑  收藏  举报