ホームページ > バックエンド開発 > PHPチュートリアル > Yii2.0はAR結合テーブルクエリ方式を使用して共有します

Yii2.0はAR結合テーブルクエリ方式を使用して共有します

小云云
リリース: 2023-03-20 10:36:01
オリジナル
1574 人が閲覧しました

Yii2.0 でジョイント テーブル クエリを使用するには 2 つの方法があります。1 つはクエリ ビルダー、もう 1 つはアクティブ レコードを使用する方法です。この記事では主にクエリ ビルダーについて詳しく説明しています。 Yii2.0 での AR ジョイント テーブル クエリの使用例を紹介します。編集者はこれが非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

2 つのテーブル

{{%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 で使用します。

<?= 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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート