Php PDO:在多个类中映射多个表(使用联接选择)
使用带有单个表的SELECT语句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 * 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的“使用缓存”是指如果查询已经执行,则不要重新执行查询……或者有更好的方法吗?实际上,我将执行两个查询,以获取所有用户的公司和所有用户的客户,然后将公司与其客户绑定。