第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用 INNER JOIN 在 GridView::widget 中顯示值

如何使用 INNER JOIN 在 GridView::widget 中顯示值

PHP
守著一只汪 2023-09-08 21:59:27
伙計(jì)們,我對(duì)此很陌生,所以請(qǐng)幫助我。這是我的 SQL:從 tb1 INNER JOIN tb2 ON tb1.login = tb2.user 中選擇 tb1.login、tb2.user我不知道如何在查詢中創(chuàng)建它,所以我可以在 GridView 中顯示值。我做到了,但根本不起作用。$query = TB1::find()->select(['tb1.login', 'tb2.user'])            ->innerWith(TB2::tablename(), 'tb1.login = tb2.user');         return new ActiveDataProvider([            'query' => $query         ]);我的網(wǎng)格視圖GridView::widget([                                'dataProvider' => $dataProvider,                                'columns' => [                                    ['class' => 'yii\grid\SerialColumn'],                                    [                                        'attribute' => 'tb1.login',                                    ],                                    [                                        'attribute' => 'tb2.user',                                      }                                    ],                                ],                            ]);在我檢查我的 gridview 后顯示“未設(shè)置”,請(qǐng)幫助我!我對(duì)此還很陌生,抱歉
查看完整描述

2 回答

?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

處理此用例的“正確”方法是使用關(guān)系方法

因此,您應(yīng)該在 TB1 中定義一個(gè)方法“hasXXX”(基于您的關(guān)系),然后您可以使用“value”選項(xiàng)在 GridView 中訪問(wèn)它

[

? ? 'attribute' => 'packageName', // it has to be defined in the model

? ? 'value' => function (Contract $model) {

? ? ? ? return $model->package->name;

? ? },

]

Yii2 將處理 SQL 和一切......


或者


您只需在 TB1 模型中添加公共屬性$publicNameand$userName并在 SQL 中設(shè)置 ALIAS即可select(['tb1.login AS loginName', 'tb2.user AS userName'])。但我認(rèn)為這是快速而骯臟的解決方案。


查看完整回答
反對(duì) 回復(fù) 2023-09-08
?
慕尼黑的夜晚無(wú)繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

為了更明確地幫助您:


在 tb1 模型中添加以下連接函數(shù):


public function getTable2(){

   return $this->hasOne(Tb2ModelNameHere::className,['tbl2_id'=>'tbl1_fk_id']);

}

其中 'tbl2_id' 和 'tbl1_fk_id' 分別是連接表 2 和表 1 的字段


在 Gridview 中,您只需調(diào)用 join 即可處理查詢:


GridView::widget([

                                'dataProvider' => $dataProvider,

                                'columns' => [

                                    ['class' => 'yii\grid\SerialColumn'],

                                    'login', // presuming login is an attribute of tbl1

                                    'table2.field_name_here',

                                    // or

                                    [

                                        'attribute' => 'table2.field_name_here',

                                    ],

                                ],

                            ]);

上面的代碼假設(shè):


DataProvider 來(lái)自 Table1。函數(shù)“getTable2”必須位于當(dāng)前 dataProvider 的模型中。換句話說(shuō):dataProvider 來(lái)自 Table1,并且在 Table1 模型中,我們添加了函數(shù)“getTable2”

為了調(diào)用函數(shù)“getTable2”,我們?cè)?gridview 的屬性中使用“table2”。Yii 自動(dòng)添加“get”并自動(dòng)將第一個(gè)字母大寫(xiě)。因此,“table2.user_name”將調(diào)用連接函數(shù)“getTable2”并從 Table2 中檢索 user_name 字段


查看完整回答
反對(duì) 回復(fù) 2023-09-08
  • 2 回答
  • 0 關(guān)注
  • 146 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)