时间:2021-07-01 10:21:17 帮助过:58人阅读
两个表
{{%article}} 和 {{%article_class}}
{{%article}} .article_class关联{{%article_class}}.id
1、要使用AR做关联查询,首先在models {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、在controllers {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、在view {GridView}中使用
<?= 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'],
],
]); ?>相关推荐:
MySQL联表查询详解_MySQL
MySQL联表查询优化实际操作流程
Yii2联表查询不能查个别字段?
以上就是Yii2.0使用AR联表查询方法分享的详细内容,更多请关注Gxl网其它相关文章!