2017-09-08 8 views
1

je veux choisir toutes les données de table devlopers, avec seulement colonne « nom d'utilisateur » dans le tableau utilisateuryii2 sélectionnez la colonne de la difficulté de table relation

j'écris cela, mais je reçois une erreur

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

mes développeurs « developer_id » colonne ont relation avec id table utilisateur colonne donc dans le modèle Les développeurs je l'ai écrit

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

erreur est

PHP Notice 'yii\base\ErrorException' 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): yii\base\ErrorHandler->handleError(8, 'Undefined index...', '/srv/http/adone...', 501, Array) 
#1 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveRelationTrait.php(381): yii\db\ActiveQuery->getModelKey(Array, Array) 
#2 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveRelationTrait.php(245): yii\db\ActiveQuery->buildBuckets(Array, Array) 
#3 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveQueryTrait.php(174): yii\db\ActiveQuery->populateRelation('users', Array) 
#4 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveQuery.php(214): yii\db\ActiveQuery->findWith(Array, Array) 
#5 /srv/http/adone/vendor/yiisoft/yii2/db/Query.php(214): yii\db\ActiveQuery->populate(Array) 
#6 /srv/http/adone/vendor/yiisoft/yii2/db/ActiveQuery.php(135): yii\db\Query->all(NULL) 
#7 /srv/http/adone/controllers/admin/SiteAdminController.php(30): yii\db\ActiveQuery->all() 
#8 [internal function]: app\controllers\admin\SiteAdminController->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): yii\base\InlineAction->runWithParams(Array) 
#11 /srv/http/adone/vendor/yiisoft/yii2/base/Module.php(523): yii\base\Controller->runAction('view-developers', Array) 
#12 /srv/http/adone/vendor/yiisoft/yii2/web/Application.php(102): yii\base\Module->runAction('admin/site-admi...', Array) 
#13 /srv/http/adone/vendor/yiisoft/yii2/base/Application.php(380): yii\web\Application->handleRequest(Object(yii\web\Request)) 
#14 /srv/http/adone/web/index.php(12): yii\base\Application->run() 
#15 {main} 

pourquoi cela est-il arrivé?

Répondre

1

Essayez ceci:

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

thankyou son travail pour moi, mais pouvez-vous dire pourquoi mon code ne fonctionne pas correctement? – moh

+0

Je ne peux pas dire avec certitude, mais il me semble que vous n'avez pas utilisé la méthode 'with()' correctement. SVP marquer la question comme répondue, si votre problème est résolu. – vityapro