我在理解CSqlDataProvider以及它的工作原理時遇到了一些麻煩。Yii CSqlDataProvider混淆
在我使用CActiveDataProvider,結果可以如下獲得:
$data->userProfile['first_name'];
然而,當我使用CSqlDataProvider,據我所知,結果如陣列不是對象返回。但是,陣列的結構是平坦的。換句話說,我看到下面的數組:
$data['first_name']
,而不是
$data['userProfile']['first_name']
但這裏的問題是什麼,如果我有另一個連接表(姑且稱之爲「作者」)在我的sql還包含first_name字段的代碼?隨着CActiveDataProvider,這兩個字段消除歧義,所以我可以做以下訪問這兩個領域:
$data->userProfile['first_name'];
$data->author['first_name'];
但隨着CSqlDataProvider,似乎沒有成爲反正我可以按如下方式訪問數據:
$data['userProfile']['first_name'];
$data['author']['first_name'];
所以,我直接SQL中分配一個唯一的名稱,以這些領域,通過做這樣的事情之外:
select author.first_name as author_first_name, userProfile.first_name as user_first_name
然後指給他們這樣的:
$ data ['author_first_name']; $ data ['user_first_name']
有沒有辦法讓CSqlDataProvider自動構造數組,使它們以CActiveDataProvider對象的相同方式嵌套?所以,我可以通過使用$ data ['userProfile'] ['first_name']
或者是否有另一個類我應該用來獲取這些類型的嵌套數組?
非常感謝!