2017-03-31 4 views
0

私はMySQLデータベースからデータをフェッチするためにdoctrineを使用しています。これはすべてシレックスで行われます。これらは私にとってDoctrineを有効にするコード行です。SQLデータはDoctrine(およびSilex)を使用して配列として返されます

$config = new \Doctrine\DBAL\Configuration(); 
$connParams = array(
    'driver' => 'pdo_mysql', 
    'dbname' => 'webshop', 
    'host'  => 'localhost', 
    'user'  => 'root', 
    'password' => '', 
    'charset' => 'utf8' 
); 
$conn = \Doctrine\DBAL\DriverManager::getConnection($connParams, $config); 
$app['dbcon'] = $conn; 

$app->get('/', function() use ($app){ 

    $user = new User($app['dbcon']); 

    return $app['twig']->render('home.twig', [ 
     'content' => 'Home', 
    ]); 

})->bind('home'); 

そして、私は、ログインもののためのユーザクラスを作成しようとしているなど、ユーザークラスは次のようになります。

<?php 

namespace Models; 

class User 
{ 
    private $db; 

    public function __construct($db) 
    { 
     $this->db = $db; 
     $query = $this->db->prepare("SELECT * FROM users"); 
     $query->execute(); 

     $query = $query->fetchAll(); 

     foreach($query as $user){ 
      print_r($user); 
     } 

    } 
} 

ものの、以下の結果である:

配列([id] => 1 [username] => araguera [password] =>パスワード[salt] => ksjdfiwe98ru2w98h)

なぜオブジェクトとしてではなく配列として返されるのですか?なぜなら、 "$ query-> username"のようなことをすることができるからです。あなたが使用することができます

$res = $query->fetchAll(\PDO::FETCH_OBJ); 

そして場合には、あなたは(1行を取得するために)fetchを使用したい:

+2

どこかのフェッチモードが配列として設定されているため、明らかです。 –

+0

そしてそれをオブジェクトに変更する方法を教えていただけますか? –

+1

http://php.net/manual/en/pdostatement.fetchall.php –

答えて

0

u_mulderさんのコメントに追加するには、あなたがオブジェクトとして結果をフェッチしPDOスタイルを使用することができます

$res = $query->fetchObject(); 
関連する問題