我一直在处理两个表(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"
中。这可能是一个问题。如果是怎么解决?
问题已正确识别,
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
);