Yii2 gridview三表联接

Yii2 gridview三表联接,gridview,yii2,yii2-advanced-app,Gridview,Yii2,Yii2 Advanced App,我是yii2框架中的新手,当我尝试连接两个以上的表时,它没有加载到gridview中 我正在尝试从语言表中获取语言名称,我可以通过userlanguage表获得该表,该表有一个两个字段,如下所示。因此,根据userID,我想获取用户的语言详细信息。 在my中显示语言名称 我的表结构是: 用户表 从这个表中,我将获得userID,它与userlanguage表的userID连接,一个userlanguage表包含两个字段 userID languageID 通过从userlanguage表中获取

我是yii2框架中的新手,当我尝试连接两个以上的表时,它没有加载到gridview中

我正在尝试从语言表中获取语言名称,我可以通过userlanguage表获得该表,该表有一个两个字段,如下所示。因此,根据userID,我想获取用户的语言详细信息。 在my中显示语言名称

我的表结构是:

用户表

从这个表中,我将获得userID,它与userlanguage表的userID连接,一个userlanguage表包含两个字段

userID
languageID
通过从userlanguage表中获取languageID,我必须从language表中显示languageName,该表包含两个字段:

languageID 
languageName
usertable包含:

userID
userName
等等


首先,在camelcase中列出您的关系:

getUser(){...}

getLanguages(){...}
然后,在栅格视图中使用关系名称:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'userID',
        'userEmail:email',
        'languages.languageID',
        'languages.languageName',
        'userName',
        'userMobile',
        'userGender',
   ['class' => 'yii\grid\ActionColumn'],

最后我得到了Yii论坛问题的答案:

请点击以下链接:


现在它是thorws:Getting unknown property:backend\models\Users::LanguageId,这很好,因为您的
getLanguages()
声明中有错误。纠正方法
getUsersLanguage()
,然后在
getLanguages()
中通过('usersLanguages')使用方法
->。Yii2文档关于via:ok我已经将其更改为:
$query->joinWith([“user”=>函数($a){$a->from(“users-user”);})$query->joinWith([“userslanguage”=>函数($b){$b->from(“userlanguage userslanguage”);}])$查询->连接([“语言”=>函数($c){$c->from(“语言”);}])并且它没有按照我的要求显示查询,请看这里返回的内容:
users'LEFT JOIN
用户
用户
用户
用户用户ID=
用户ID
用户ID左连接
用户语言
用户语言关于
users
userID
=
userslanguage
userID
LEFT-JOIN
language
users
languageID
上加入
languageID
languageID``你现在正在写这么多无用的代码。您可以删除此select语句,定义正确的关系,这些关系100%工作(为此,我建议阅读一些关于Yii2中ActiveRecord的文档),然后仅对这些关系进行操作,如
->joinWith(['languages'])
->和filterwhere(['languages.languageID'=>12])
,并在GridView中进行操作,如我的回答所示。
yii\data\ActiveDataProvider Object
(
    [query] => yii\db\ActiveQuery Object
        (
            [sql] => 
            [on] => 
            [joinWith] => Array
                (
                    [0] => Array
                        (
                            [0] => Array
                                (
                                    [users] => Closure Object
                                        (
                                            [static] => Array
                                                (
                                                    [callback] => 
                                                    [alias] => user
                                                )

                                            [this] => yii\db\ActiveQuery Object
 *RECURSION*
                                            [parameter] => Array
                                                (
                                                    [$query] => 
                                                )

                                        )

                                )

                            [1] => 1
                            [2] => LEFT JOIN
                        )

                    [1] => Array
                        (
                            [0] => Array
                                (
                                    [0] => language
                                )

                            [1] => 1
                            [2] => LEFT JOIN
                        )

                )

            [select] => 
            [selectOption] => 
            [distinct] => 
            [from] => 
            [groupBy] => 
            [join] => 
            [having] => 
            [union] => 
            [params] => Array
                (
                )

            [_events:yii\base\Component:private] => Array
                (
                )

            [_behaviors:yii\base\Component:private] => Array
                (
                )

            [where] => 
            [limit] => 
            [offset] => 
            [orderBy] => 
            [indexBy] => 
            [modelClass] => backend\models\Users
            [with] => 
            [asArray] => 
            [multiple] => 
            [primaryModel] => 
            [link] => 
            [via] => 
            [inverseOf] => 
        )

    [key] => 
    [db] => 
    [id] => 
    [_sort:yii\data\BaseDataProvider:private] => 
    [_pagination:yii\data\BaseDataProvider:private] => 
    [_keys:yii\data\BaseDataProvider:private] => 
    [_models:yii\data\BaseDataProvider:private] => 
    [_totalCount:yii\data\BaseDataProvider:private] => 
    [_events:yii\base\Component:private] => Array
        (
        )

    [_behaviors:yii\base\Component:private] => 
)
getUser(){...}

getLanguages(){...}
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'userID',
        'userEmail:email',
        'languages.languageID',
        'languages.languageName',
        'userName',
        'userMobile',
        'userGender',
   ['class' => 'yii\grid\ActionColumn'],
->joinWith(['languages'])