yii2从关系表故障中选择列



我想选择所有devlopers表数据,只有用户表中的"用户名"列

我写这篇文章,但我得到了错误

$model = Developers::find()->select('*')->with(['users' => function($q){
            $q->select('username');
        }])->asArray()->all();

我的开发人员" developer_id"列与用户表ID列有关系所以在开发人员模型中,我写了

 public function getUsers()
    {
        return $this->hasOne(User::className(), ['id' => 'developer_id']);
    }

错误是

PHP Notice 'yiibaseErrorException' with message 'Undefined index: id' 
in /srv/http/adone/vendor/yiisoft/yii2/db/ActiveRelationTrait.php:501
Stack trace:
#0 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveRelationTrait.php(501): yiibaseErrorHandler->handleError(8, 'Undefined index...', '/srv/http/adone...', 501, Array)
#1 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveRelationTrait.php(381): yiidbActiveQuery->getModelKey(Array, Array)
#2 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveRelationTrait.php(245): yiidbActiveQuery->buildBuckets(Array, Array)
#3 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveQueryTrait.php(174): yiidbActiveQuery->populateRelation('users', Array)
#4 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveQuery.php(214): yiidbActiveQuery->findWith(Array, Array)
#5 /srv/http/adone/vendor/yiisoft/yii2/db/Query.php(214): yiidbActiveQuery->populate(Array)
#6 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveQuery.php(135): yiidbQuery->all(NULL)
#7 /srv/http/adone/controllers/admin/SiteAdminController.php(30): yiidbActiveQuery->all()
#8 [internal function]: appcontrollersadminSiteAdminController->actionViewDevelopers()
#9 /srv/http/adone/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#10 /srv/http/adone/vendor/yiisoft/yii2/base/Controller.php(156): yiibaseInlineAction->runWithParams(Array)
#11 /srv/http/adone/vendor/yiisoft/yii2/base/Module.php(523): yiibaseController->runAction('view-developers', Array)
#12 /srv/http/adone/vendor/yiisoft/yii2/web/Application.php(102): yiibaseModule->runAction('admin/site-admi...', Array)
#13 /srv/http/adone/vendor/yiisoft/yii2/base/Application.php(380): yiiwebApplication->handleRequest(Object(yiiwebRequest))
#14 /srv/http/adone/web/index.php(12): yiibaseApplication->run()
#15 {main}

为什么发生这种情况?

尝试以下:

Developers::find()->select('developers.*, user.username')->joinWith(['users'])->asArray()->all()

最新更新