有没有一种方法可以在 Laminas Db Select 连接操作中合并条件子句?

问题描述 投票:0回答:1

我一直在处理两个表(A 和 B),我想做的是使用 laminas db 中的左连接从这些表中获取数据。下面的代码很重要

$select->join(array('b' => 'custom_table1'), "a.id = b.column1_id AND b.coulmn2_id = 1", array('b' => 'custom_column_name'), Select::JOIN_LEFT);

问题是它在

Statement could not be executed (42S22 - 1054 - Unknown column '1' in 'on clause')
处给出
AND b.coulmn2_id = 1

连接必须将其视为简单条件,而不是表列。上述代码生成的查询在 MySQL 中有效,但在层压中它会发出错误。

有一件事

b.coulmn_id
显示在引号
"1"
中。这可能是一个问题。如果是怎么解决?

php mysql doctrine-orm zend-db laminas
1个回答
0
投票

问题已正确识别,

Id
被视为列名称而不是值。我找到的解决方案是使用
Laminas\Db\Sql\Expression
。 喜欢:

$select->join(
            array('b' => 'custom_table'),
            new Expression('b.a_id = a.id AND b.s_id ='.(int) $s->getId()), 
            array(),
            Select::JOIN_LEFT
        );
© www.soinside.com 2019 - 2024. All rights reserved.