Heim  >  Artikel  >  Backend-Entwicklung  >  Yii2.0 verwendet zum Teilen die gemeinsame AR-Tabellenabfragemethode

Yii2.0 verwendet zum Teilen die gemeinsame AR-Tabellenabfragemethode

小云云
小云云Original
2018-02-12 14:40:541547Durchsuche

Es gibt zwei Möglichkeiten, gemeinsame Tabellenabfragen in Yii2.0 zu verwenden, und die zweite ist die Verwendung von Active Record. In diesem Artikel wird hauptsächlich über den Abfrage-Builder gesprochen Yii2.0 verwendet Beispiele für gemeinsame Tabellenabfragen. Der Herausgeber findet es ziemlich gut. Jetzt werde ich es mit Ihnen teilen und als Referenz geben. Folgen wir dem Herausgeber, um einen Blick darauf zu werfen. Ich hoffe, es kann allen helfen.

Zwei Tabellen

{{%article}} und {{%article_class}}

{{%article}} .article_class-Assoziation{ { %article_class}}.id

1. Um AR für zugehörige Abfragen zu verwenden, erstellen Sie zunächst eine Zuordnung in den Modellen {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. Wird in Controllern {ArticleController} verwendet,


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. Wird in der Ansicht {GridView}


Verwandte Empfehlungen:
<?= 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;], 
  ], 
]); ?>


Detaillierte Erläuterung der MySQL-Verbindungstabellenabfrage_MySQL

Der tatsächliche Betriebsprozess zur Optimierung der MySQL-Verbindungstabellenabfrage

Kann die gemeinsame Tabellenabfrage von Yii2 nicht einzelne Felder prüfen?

Das obige ist der detaillierte Inhalt vonYii2.0 verwendet zum Teilen die gemeinsame AR-Tabellenabfragemethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn