【发布时间】:2020-01-28 13:56:34
【问题描述】:
我正在使用学说从我的数据库中加载数据:
$data = $this->em->getRepository('App\\Entity\\Data')->allData();
这会创建一个包含大量数据的数组:
PagesGenerator.php on line 259:
array:1696 [▼
0 => Data^ {#5430 ▼
-id: 2298
-uuid: "426441e418"
-content: "two"
-document_id: "93b7dc32f4"
}
1 => Data^ {#5434 ▼
-id: 2299
-uuid: "c1474a87a9"
-content: ""
-document_id: "93b7dc32f4"
}
2 => Data^ {#5413 ▼
-id: 2300
-uuid: "8bfd9b4893"
-content: "three"
-document_id: "edb8fa9647"
}
3 => Data^ {#5427 ▶}
4 => Data^ {#5428 ▶}
5 => Data^ {#5433 ▶}
6 => Data^ {#5431 ▶}
7 => Data^ {#5429 ▶}
我还有另一个数组$docIds:
array:96 [▼
0 => "3019b7a82f"
1 => "b1a4c67080"
2 => "82cf4392d7"
3 => "55768e0955"
4 => "74c6217001"
5 => "71fc4c3ebf"
6 => "35e2d3a1c6"
7 => "50c940b223"
8 => "2561ff454d"
9 => "bb447530e1"
为了获得更快的性能,我喜欢对数组 $data 进行预过滤,使其仅包含带有 document_ids 的条目,这些条目是我的数组 $docIds 中的值;
这是我的方法:
$data = $this->em->getRepository('App\\Entity\\Data')->filterByDocID($docIds);
在我的数据存储库中:
public function filterByDocID($array)
{
$query = $this->getEntityManager()
->createQuery(
"SELECT a
FROM App\Entity\Data a
WHERE document_id IN ('".$array."')");
try {
return $query->getResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
但我收到错误消息:
注意:数组到字符串的转换
【问题讨论】:
-
php.net/manual/en/function.implode.php 或 symfony 可能有它自己的方式。
-
@AbraCadaver “内爆”如何帮助过滤 mysql?
-
PHP/查询无法将您的数组正确转换为字符串,但您可以在将其传递给查询之前。
-
@AbraCadaver 好的,我明白了
标签: php arrays database symfony doctrine