我在理解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']
或者是否有另一个类我应该用来获取这些类型的嵌套数组?
非常感谢!