小编van*_*van的帖子

当使用可空关系连接表时,Doctrine返回代理对象

我试图从一个与另一个类连接的类中检索实体.并非所有实体实际上都已加入实体.

它有点像以下声明:

SELECT a, b FROM A a LEFT JOIN B b ON a.id = b.aid GROUP BY a.id;
Run Code Online (Sandbox Code Playgroud)

或在代码中:

$query_builder = $em->getRepository('repository_of_A')->createQueryBuilder('a');
$query_builder = $query_builder->leftJoin('a.b', b);
$query_builder = $query_builder->groupBy('a.id');
$query = $query_builder->select('a, b')->getQuery();
$entities = $query->getResult();
Run Code Online (Sandbox Code Playgroud)

现在的问题是,只要A没有实体B,Doctrine就会返回A的代理对象.因为我使用反射,我需要真正的对象而不是代理.

在附加的屏幕截图中,具有索引26的对象对于A(商店)没有对应的实体B.

商店实体(A)是代理商

有谁知道为什么以及如何解决这个问题?

注意:我知道在使用反射时我可以使用classname而不是实体,但我也想了解这里的问题,因为它可能会影响运行时...

编辑:附上截图

php proxy doctrine join symfony

5
推荐指数
1
解决办法
1022
查看次数

在 Redshift 中有多个列的 WHERE IN

我正在使用 Amazon Redshift,其中有两个表。我从 S3 复制所有数据的临时表和最终应插入所有内容的目标表。

现在我的查询应该从临时表中的目标表中删除所有内容,这样我就不会出现重复项。

DELETE FROM xschema.target
WHERE (col1, col2) IN 
(
SELECT col1, col2
FROM xschema.staging
)
AND col3 = 'de'
;
Run Code Online (Sandbox Code Playgroud)

查询会执行,但会删除所有col3 = 'de'为真的内容。IN语句的条件总是返回真。

例如:如果我的目标表中有以下值

col1 | col2 | col3 | col4
aaa  | 1    | de   | 100
bbb  | 2    | de   | 200
ccc  | 1    | us   | 180
Run Code Online (Sandbox Code Playgroud)

在我的临时表中,有以下值:

col1 | col2 | col3 | col4
aaa  | 1    | de   | 100
ddd  | 1    | …
Run Code Online (Sandbox Code Playgroud)

sql amazon-redshift

5
推荐指数
1
解决办法
1962
查看次数

标签 统计

amazon-redshift ×1

doctrine ×1

join ×1

php ×1

proxy ×1

sql ×1

symfony ×1