Php PDO:在多个类中映射多个表(使用联接选择)

Php PDO:在多个类中映射多个表(使用联接选择),php,mysql,database,pdo,Php,Mysql,Database,Pdo,使用带有单个表的SELECT语句 SELECT * FROM customer WHERE id = :id 我可以轻松地在Customer类中映射输出 class Customer { private $id; private $name; private Company; // etc... } 这样 // ... return $stmt->fetchALL(\PDO::FETCH_CLASS, "Customer"); 但在具有两个或多个表的

使用带有单个表的SELECT语句

SELECT * FROM customer WHERE id = :id
我可以轻松地在Customer类中映射输出

class Customer 
{
    private $id;
    private $name;

    private Company;
   // etc...
}
这样

// ...
return $stmt->fetchALL(\PDO::FETCH_CLASS, "Customer");
但在具有两个或多个表的查询中

SELECT * FROM customer AS cu JOIN company AS co ON cu.company_id = co.id WHERE cu.id = :id

class Company
{
    private $id;
    private $name;

   // etc...
}

如何使用
$stmt->fetchALL(\PDO::FETCH_class,“Customer”)
公司
数据填充
Customer
类?

只需执行两个查询并将公司分配给客户的对象。但这是更简单的场景。。。对于100个客户,我应该提出100个查询才能获得公司?如果select有三个表,则在这种情况下使用缓存。它将比附加查询和join快得多。另一种方法是使用FETCH_FUNC,您可以在其中手动映射属性。@AndrejLudinovskov的“使用缓存”是指如果查询已经执行,则不要重新执行查询……或者有更好的方法吗?实际上,我将执行两个查询以获取所有用户的公司和所有用户的客户,然后将公司与其客户绑定。只需执行两个查询并将公司分配给客户的对象。但这是更简单的场景。。。对于100个客户,我应该提出100个查询才能获得公司?如果select有三个表,则在这种情况下使用缓存。它将比附加查询和join快得多。另一种方法是使用FETCH_FUNC,您可以在其中手动映射属性。@AndrejLudinovskov的“使用缓存”是指如果查询已经执行,则不要重新执行查询……或者有更好的方法吗?实际上,我将执行两个查询,以获取所有用户的公司和所有用户的客户,然后将公司与其客户绑定。