如何将mongodb数据显示到yii2表?

如何将mongodb数据显示到yii2表?,mongodb,yii2,Mongodb,Yii2,我想将MongoDB用户收集数据显示到yii2表格中。当我运行时,它不显示任何数据输出(我在用户集合中有5行) 我是mongodb的新手。当我显示来自mysql的数据时,我尝试了使用通常的格式来显示它(只有我更改的查询)。它似乎工作不好,但没有显示任何错误消息 这是我的代码: Model/User.php class User extends ActiveRecord implements IdentityInterface { public $_id; public $username

我想将MongoDB用户收集数据显示到yii2表格中。当我运行时,它不显示任何数据输出(我在用户集合中有5行)

我是mongodb的新手。当我显示来自mysql的数据时,我尝试了使用通常的格式来显示它(只有我更改的查询)。它似乎工作不好,但没有显示任何错误消息

这是我的代码:

Model/User.php

class User extends ActiveRecord implements IdentityInterface
{
  public $_id;
  public $username;
  public $password;

  public static function collectionName()
  { return ['latihan', 'User']; }

  public function attributes()
  {
    return [
       '_id',
       'id',
       'username',
       'password',
       'role',        
    ];
  }

   public function fields() 
   {
     return [
        '_id' => function() { return (string)$this->_id; },
        'id',
        'username',
        'password',
        'role',  
      ];
  }

  public function rules()
  {
  return [
      ['role', 'default', 'value' => 10],
      [['_id', 'username', 'password'], 'safe'],
    ];
   }

  public static function findOne($condition)
  {
    $query = new Query();
    $data = $query->from(static::collectionName())->where($condition)->one();
    $user = new User();
    $user->id = $data['id'];
    $user->username = $data['username'];
    $user->password = $data['password'];
    $user->role = $data['role'];

    return $user;
}
HomeController.php

public function actionAbout()
{
    $user = User::find()->all();
    return $this->render('about', ['model' => $user]); 
    }
}
关于.php

    <table class="table table-bordered">
    <thead>
        <tr>
        <th>#</th>
        <th>Username</th>
        <th>Password</th>
        <th>Aksi</th>
        </tr>
    </thead>
    <tbody>

<?php $i = 1; foreach($model as $field){ ?>
    <tr>
    <?php $username =$field->username; ?>
        <td><?php echo $i++; ?></td>
            <td><?= $field->username; ?></td>
            <td><?= $field->password; ?></td>
            <td>
            <a href="<?php echo Url::to(['/home/editabout']).'?id='.$field->id;?>"> Update</a> | 
            <a href="<?php echo Url::to(['/home/deleteabout']).'?id='.$field->id; ?>"> Delete</a>
            </td>
        </tr>
    <?php } ?>
    </tbody>
</table>

#
用户名
密码
阿克西
| 
来自 首先你必须加上 在composer.json文件中,使用以下命令更新composercomposer update

然后可以编辑main local.php文件并覆盖db组件

return [
    //....
    'components' => [
        'db' => [
            'class' => '\yii\mongodb\Connection',
            'dsn' => 'mongodb://@localhost:27017/mydatabase',
            'options' => [
                "username" => "Username",
                "password" => "Password"
            ]
        ],
    ],
];
+如果您想同时使用mysql(Deafolt连接)和mongodb,您不能覆盖db组件,只需添加mongodb即可

return [
    //....
    'components' => [
        'db' => [
            .... mysql db config (default)
        ],
        'mongodb' => [
            'class' => '\yii\mongodb\Connection',
            'dsn' => 'mongodb://@localhost:27017/mydatabase',
            'options' => [
                "username" => "Username",
                "password" => "Password"
            ]
        ],
    ],
];

@Hanifbudiari我看到了你的数据库,也许你有空的值我很确定如果我的数据库不是空的,我有5行,每个值在用户中document@HanifBudiarti否,请检查您的列是否为空或我的列是否为非空。这不起作用,因为您在
User::findOne()
中实现了这些字段的设置,但在控制器中,您使用的是
User::find()->all()