sql >> Databasteknik >  >> RDS >> Mysql

PDO FETCH_CLASS med sammanfogade tabeller

Det finns inget stöd för direkt i PDO såvitt jag vet. Vanligtvis om du behöver skapa en komplex objektgraf från resultatet av frågan är det en ORMs ansvar.

Om du behöver den här funktionen rekommenderar jag att du använder doktrin eller Propel i motsats till att skriva något själv. Det finns andra också som kan vara lättare, men jag har ingen erfarenhet av dem.

EDIT:

Jag tror att jag kanske missuppfattade frågan eftersom jag är säker på att andra kan göra det. Jag tror att den verkliga frågan var hur man får tillgång till de sammanfogade kolumnerna, inte nödvändigtvis hur man skapar ett objekt från dem.

I så fall använder du helt enkelt en standard arry fethc-metod som PDO::FETCH_ASSOC , PDO::FETCH_NUMERIC eller PDO::FETCH_BOTH ger dig alla kolumner du frågade efter.

Så om du vill förvandla det till ett "objektdiagram" måste du göra det manuellt, inte genom att använda PDO::FETCH_CLASS .

Till exempel:

//$db is pdo:
// also notice im aliase the columns prefixing the name so that we can tell what belongs to
// post and what belongs to user, an alternative approach would be to use FETCH_NUMERIC,
// which just uses the column positions from the seelct statement as the keys
// so in this case post.id would be in the array as key 0, and user.name would be in the
// array as key 4
$stmt = $db->prepare('SELECT post.id as p_id, 
       post.text as p_text, 
       post.user_id as p_user_id, 
       user.id as u_id, 
       user.name as u_name
FROM POST INNER JOIN User on post.user_id = user.id');

$stmt->execute();

while (($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false) {
   print_r($row);
   /* will output:
      Array (
         'p_id' => 'value'
         'p_text' => 'value'
         'p_user_id' => 'value'
         'u_id' => 'value',
         'u_name' => 'value'
      )
   So now you need to decide how to create your objects with the information returned
   */
}


  1. Varför anses det vara dålig praxis att använda markörer i SQL Server?

  2. MySQL gå med och exkludera?

  3. mysql Compress() med sqlalchemy

  4. Hur laddar jag Individual Div utan att ladda hela sidan och visa laddningsstatus?