Php Yii2使用ArrayHelper::toArray()将模型对象转换为数组

Php Yii2使用ArrayHelper::toArray()将模型对象转换为数组,php,yii2,yii2-advanced-app,yii2-model,Php,Yii2,Yii2 Advanced App,Yii2 Model,我正在YII2框架中处理以下查询 SELECT T.id, T.name, T.status, IFNULL(T.image,'no-image.png') as DP FROM TABLE_NAME T; 这是我的密码 $modelTeam = Teams::find() ->select( ['T.id', 'T.name', 'T.status', 'IFNULL(T.image,"no-image.png") as DP'] ) ->

我正在YII2框架中处理以下查询

SELECT T.id, T.name, T.status, IFNULL(T.image,'no-image.png') as DP
FROM TABLE_NAME T;
这是我的密码

$modelTeam = Teams::find()
    ->select(
        ['T.id', 'T.name', 'T.status', 'IFNULL(T.image,"no-image.png") as DP']
    )
    ->from('{{%teams}} T')
    ->all();

编辑:

结果集根本不包含
DP
列。为什么会这样,我该怎么做


编辑2:

在告诉结果不包括
DP
列时,我遗漏了一条重要信息,即我正在使用
ArrayHelper::toArray()
将模型对象转换为数组,然后对其进行迭代

$results=ArrayHelper::toArray($modelTeam);

要在带有Yii2的select中使用IFNULL,必须创建一个新表达式

$modelTeam = Teams::find()
    ->select(['T.id', 'T.name', 'T.status'])
    ->addSelect([new Expression('IFNULL(T.image,"no-image.png") as DP')])
    ->from('{{%teams}} T')
    ->all()

要在带有Yii2的select中使用IFNULL,必须创建一个新表达式

$modelTeam = Teams::find()
    ->select(['T.id', 'T.name', 'T.status'])
    ->addSelect([new Expression('IFNULL(T.image,"no-image.png") as DP')])
    ->from('{{%teams}} T')
    ->all()

实际的问题不是我想的那样,查询是正确的,我使用
ArrayHelper::toArray($modelTeam)
方法将模型对象转换为数组,以进一步迭代数组并显示所有记录,这就是问题所在

我需要为
ArrayHelper::toArray()
使用第二个参数
$properties
。第二个参数转换每个类的属性映射,因为它无法显示模型的自定义声明的
public
属性,并且
DP
Teams
模型内声明为
public
,因为它是
ActiveRecrod
查询中的别名

$modelTeam = Teams::find()->
    select(['TM.id', 'TM.name', 'TM.status'])
    ->addSelect([new \yii\db\Expression('IFNULL(TM.image,\'no-image.png\') AS DP')])
    ->from('{{%teams}} TM')->all();

$results = ArrayHelper::toArray($modelTeam, [
    'common\models\Teams' => [
        'id',
        'name',
        'status',
        'DP',
    ],
]);

实际的问题不是我想的那样,查询是正确的,我使用
ArrayHelper::toArray($modelTeam)
方法将模型对象转换为数组,以进一步迭代数组并显示所有记录,这就是问题所在

我需要为
ArrayHelper::toArray()
使用第二个参数
$properties
。第二个参数转换每个类的属性映射,因为它无法显示模型的自定义声明的
public
属性,并且
DP
Teams
模型内声明为
public
,因为它是
ActiveRecrod
查询中的别名

$modelTeam = Teams::find()->
    select(['TM.id', 'TM.name', 'TM.status'])
    ->addSelect([new \yii\db\Expression('IFNULL(TM.image,\'no-image.png\') AS DP')])
    ->from('{{%teams}} TM')->all();

$results = ArrayHelper::toArray($modelTeam, [
    'common\models\Teams' => [
        'id',
        'name',
        'status',
        'DP',
    ],
]);

使用addSelect并将新表达式放入数组?输出是什么?下面是完整的代码“$modelTeam=Teams::find()->select(['T.id','T.name','T.status'])->addSelect([new\yii\db\Expression('IFNULL(T.image,\'no-image.png\')AS DP')))->from('{{%Teams}T')->all();打印(ArrayHelper::toArray($modelTeam));`使用addSelect输出
Array([0]=>Array([id]=>1[name]=>Pirates[status]=>active))
并将新表达式放入数组?输出是什么?下面是完整的代码“$modelTeam=Teams::find()->select(['T.id','T.name','T.status'])->addSelect([new\yii\db\Expression('IFNULL(T.image,\'no-image.png\')AS DP')))->from('{{%Teams}T')->all();打印(ArrayHelper::toArray($modelTeam));`输出
Array([0]=>Array([id]=>1[name]=>Pirates[status]=>active))
pls,添加您所做的解释重点是我们可以在模型对象之后添加->asArray()->all()。然后,我们可以将结果$arrTeam用作一般数组,如$arrTeam[0]['name']。不确定别名“DP”,但希望它能工作。请通过编辑它在问题中添加解释。请添加你所做的解释。重点是我们可以在模型对象之后添加->asArray()->all()。然后,我们可以将结果$arrTeam用作一般数组,如$arrTeam[0]['name']。不确定别名“DP”,但希望它能工作。请通过编辑它在问题中添加解释。