Yii2.0은 AR 조인트 테이블 쿼리 방식을 사용하여 공유합니다.

小云云
풀어 주다: 2023-03-20 10:36:01
원래의
1551명이 탐색했습니다.

Yii2.0에서 조인트 테이블 쿼리를 사용하는 방법은 두 가지가 있는데, 첫 번째는 Query Builder를 사용하는 것이고, 두 번째는 Active Record를 사용하는 것입니다. Yii2.0에서 AR 조인트 테이블 쿼리를 사용하는 예를 알려드리겠습니다. 편집자가 꽤 좋다고 생각하여 지금 공유하고 참고용으로 제공하겠습니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.

두 개의 테이블

{{%article}} 및 {{%article_class}}

{{%article}}.article_class가 {{%article_class}}.id

1과 연결되어 있습니다. 관련 쿼리의 경우 먼저 모델 {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. 컨트롤러 {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에서 사용하세요. 3.

<?= GridView::widget([ 
  &#39;dataProvider&#39; => $dataProvider, 
  &#39;columns&#39; => [ 
    [&#39;class&#39; => &#39;yii\grid\SerialColumn&#39;], 
    &#39;id&#39;, 
    //&#39;article_content:ntext&#39;, 
    [ 
      &#39;value&#39;=>&#39;class_name&#39;, 
      &#39;label&#39;=>&#39;文章分类&#39;, 
    ], 
    &#39;article_title&#39;, 
    &#39;article_addtime:datetime&#39;, 
    // &#39;article_updatetime:datetime&#39;, 
    // &#39;article_author&#39;, 
    [&#39;class&#39; => &#39;yii\grid\ActionColumn&#39;], 
  ], 
]); ?>
로그인 후 복사

관련 추천 :


MySQL 조인트 테이블 쿼리에 대한 자세한 설명_MySQL

MySQL 조인트 테이블 쿼리 최적화 실제 연산 과정

Yii2 조인트 테이블 쿼리는 개별 필드를 확인할 수 없나요?

위 내용은 Yii2.0은 AR 조인트 테이블 쿼리 방식을 사용하여 공유합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿