Php Yii2使用ArrayHelper::toArray()将模型对象转换为数组
我正在YII2框架中处理以下查询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'] ) ->
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”,但希望它能工作。请通过编辑它在问题中添加解释。