Php 如何使用pdo映射组_CONCAT->;fetchAll和mode PDO::FETCH_类从字符串到数组
我想知道fetchAll of PDO实际上是如何实现的,以了解如何将数据库(包括GROUP_CONCAT()逗号分隔的列表字符串)的结果映射到数组属性 拥有类似sql的Php 如何使用pdo映射组_CONCAT->;fetchAll和mode PDO::FETCH_类从字符串到数组,php,pdo,magic-function,Php,Pdo,Magic Function,我想知道fetchAll of PDO实际上是如何实现的,以了解如何将数据库(包括GROUP_CONCAT()逗号分隔的列表字符串)的结果映射到数组属性 拥有类似sql的 $query=“选择a.id,GROUP_CONCAT(b.name)作为(a.id=b.id_a)上连接b的引用名称” 将返回类似于 id(int) 参考信号(srting) 1. 马克,莫娜,萨姆 2. 吉姆,汤姆,莎拉,迈克 3. ... 由于您正在加载的列的名称是类的一部分,因此它将设置该值,而无需调用\u set方法
$query=“选择a.id,GROUP_CONCAT(b.name)作为(a.id=b.id_a)上连接b的引用名称”
将返回类似于
id(int)
参考信号(srting)
1.
马克,莫娜,萨姆
2.
吉姆,汤姆,莎拉,迈克
3.
...
由于您正在加载的列的名称是类的一部分,因此它将设置该值,而无需调用
\u set
方法。因此,一种方法(似乎有效)是添加一个列别名,该别名在本例中的类名称列表中不存在
$query = "Select a.id, GROUP_CONCAT(b.name) AS nameList
FROM a
JOIN b on (a.id = b.id_a)"
然后,这将调用\u set
方法,您可以在获得名称列表时进行处理
class someObject {
public int $id;
public array $referencingNames;
public function __set($name, $value)
{
if($name == "nameList") {
$this->referencingNames = explode(",", $value);
} else {
$this->$name = $value;
}
}
}
那么php文档在这里是错误的?由于似乎没有为私有属性?@helle调用set,FETCH_类的使用似乎绕过了访问修饰符。当大多数类都使用私有数据并且希望FETCH_类仍然能够正确填充它们时,这是有意义的。谢谢您的提示。我稍后会尝试并接受答案。很高兴有一个解决方案很好!!这真的很好,现在节省了我很多时间!