如何添加 Null 值以匹配 UNION CAKEPHP 4 中的列
How to add Null value to match the columns in UNION CAKEPHP 4
NULL 在尝试匹配第一个 table 中的列数时,这给了我 SQL 语法,但是 0 可以正常工作,而不是 NULL
示例代码
$a = $table_a
->find()
->select(['id', 'first_name', 'last_name'])
$b = $table_b
->find()
->select(['id', 'first_name', NULL])
$union = $b->union($a);
通常您不能在 select 列表中使用 PHP NULL
,因为在编译 SQL 和 [=24] 时该值用于字符串连接=] 会将 NULL
转换为空字符串。
您可以使用别名和 NULL
作为字符串,例如:
->select(['id', 'first_name', 'last_name' => 'NULL'])
或允许您直接插入原始 SQL 并省略别名的表达式对象:
->select(function (\Cake\ORM\Query $query) {
return [
'id',
'first_name',
$query->newExpr('NULL'),
// in the first query the alias would be required
// 'last_name' => $query->newExpr('NULL'),
];
})
请注意,您只能在传递给 union()
的查询中省略别名,不能在第一个查询中省略它,因为 ORM 稍后在构建结果集时需要列名, 在第一个查询中省略别名会导致错误!
NULL 在尝试匹配第一个 table 中的列数时,这给了我 SQL 语法,但是 0 可以正常工作,而不是 NULL
示例代码
$a = $table_a
->find()
->select(['id', 'first_name', 'last_name'])
$b = $table_b
->find()
->select(['id', 'first_name', NULL])
$union = $b->union($a);
通常您不能在 select 列表中使用 PHP NULL
,因为在编译 SQL 和 [=24] 时该值用于字符串连接=] 会将 NULL
转换为空字符串。
您可以使用别名和 NULL
作为字符串,例如:
->select(['id', 'first_name', 'last_name' => 'NULL'])
或允许您直接插入原始 SQL 并省略别名的表达式对象:
->select(function (\Cake\ORM\Query $query) {
return [
'id',
'first_name',
$query->newExpr('NULL'),
// in the first query the alias would be required
// 'last_name' => $query->newExpr('NULL'),
];
})
请注意,您只能在传递给 union()
的查询中省略别名,不能在第一个查询中省略它,因为 ORM 稍后在构建结果集时需要列名, 在第一个查询中省略别名会导致错误!