我知道有使用asArray()的答案
但是如果我需要同时关系和数组的模型怎么办呢?
在这个例子中,demoJson没有关系:
$demo = Demo::find()->with('bundles')->one();
// view
<?= var demoJson = json_encode($demo) ?> <!-- Using as array ERROR -->
<?= $demo->bundles[0]->someFunc() ?> <!-- Using model OK -->
在这个例子中没有someFunc(),因为使用了一个简单的数组:
$demo = Demo::find()->with('bundles')->asArray()->one();
// view
<?= var demoJson = json_encode($demo) ?> <!-- Using as array OK -->
<?= $demo['bundles'][0]->someFunc() ?> <!-- Using model ERROR -->
那么,如何从模型中获取所有关系但不使用asArray的数组。
答案 0 :(得分:0)
您可以尝试:
$demo = Demo::find()->with('bundles')->limit(1)->one();
// view
<?= var demoJson = json_encode($demo->toArray()) ?>
<?= $demo->bundles[0]->someFunc() ?>
Demo
模型可能是这样的:
namespace app\models;
use yii\db\ActiveRecord;
Class Demo extends ActiveRecord
{
// ...
/**
* @return array
*/
public function fields()
{
$fields = parent::fields();
if ($this->isNewRecord) {
return $fields;
}
$fields['bundles'] = function() {
$bundles = [];
foreach ($this->bundles as $bundle) {
$bundles[] = $bundle->toArray();
}
return $bundles;
}
return $fields;
}
}