Zend Db 在哪里
Zend Db Where in
我在 MSSQL 服务器上有以下 table:
Superheroes: id,name,real_name,power
作为输入,我有以下数组:
$heroes=["Superman","Batman","Wonder Woman"]
而且我想使用 Zend Framework 2.3.2 获取他们的真实姓名。
因此在我的模型上我有这个功能:
public function getHeroesRealNames(array $superHeroesNames)
{
/**
* @var Zend\Db\Adapter\AdapterInterface
*/
$db=$this->db;
$sql=new Sql($db);
$qb=new Select('dbo.Superheroes');
$qb->columns(['real_name'])->where('name IN (?)',$superHeroesNames);
$query_string=$sql->getSqlStringForSqlObject($bq)
var_dump($query_string);//Debug Output
}
但是 var_dump
用于调试 returns:
SELECT [dbo.Superheroes].[real_name] AS [real_name] FROM [dbo.Superheroes] WHERE name IN ('')"
而不是完整查询。我该如何解决?请注意,我不在生产中使用 var_dump
。
我认为您需要使用 In Predicate,因为 where 方法需要这个,但如果给定正确的数组或字符串,该方法也会为您创建正确的谓词。
您可以在此处找到文档.. https://framework.zend.com/apidoc/2.1/classes/Zend.Db.Sql.Predicate.In.html
您不必直接使用 class,您可以...
基本示例:
$select->from('Superheroes')->where(array(
'name' =>$superHeroesNames,
));
您也可以在文档页面上找到相关示例 https://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html#where-having
请注意where方法的第二个参数是组合类型,即AND或OR
我在 MSSQL 服务器上有以下 table:
Superheroes: id,name,real_name,power
作为输入,我有以下数组:
$heroes=["Superman","Batman","Wonder Woman"]
而且我想使用 Zend Framework 2.3.2 获取他们的真实姓名。 因此在我的模型上我有这个功能:
public function getHeroesRealNames(array $superHeroesNames)
{
/**
* @var Zend\Db\Adapter\AdapterInterface
*/
$db=$this->db;
$sql=new Sql($db);
$qb=new Select('dbo.Superheroes');
$qb->columns(['real_name'])->where('name IN (?)',$superHeroesNames);
$query_string=$sql->getSqlStringForSqlObject($bq)
var_dump($query_string);//Debug Output
}
但是 var_dump
用于调试 returns:
SELECT [dbo.Superheroes].[real_name] AS [real_name] FROM [dbo.Superheroes] WHERE name IN ('')"
而不是完整查询。我该如何解决?请注意,我不在生产中使用 var_dump
。
我认为您需要使用 In Predicate,因为 where 方法需要这个,但如果给定正确的数组或字符串,该方法也会为您创建正确的谓词。
您可以在此处找到文档.. https://framework.zend.com/apidoc/2.1/classes/Zend.Db.Sql.Predicate.In.html
您不必直接使用 class,您可以...
基本示例:
$select->from('Superheroes')->where(array(
'name' =>$superHeroesNames,
));
您也可以在文档页面上找到相关示例 https://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html#where-having
请注意where方法的第二个参数是组合类型,即AND或OR