Zend Db在哪里

时间:2017-02-06 11:53:39

标签: php sql-server zend-framework2

我在MSSQL服务器上有以下表格:

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用于调试目的返回:

  

SELECT [dbo.Superheroes]。[real_name] AS [real_name] FROM [dbo.Superheroes] WHERE name IN('')"

而不是完整的查询。我该如何解决这个问题?请注意我不会在生产中使用var_dump

1 个答案:

答案 0 :(得分:1)

我认为你需要使用In Predicate,因为where方法需要这个,但是如果给定正确的数组或字符串,该方法也会为你创建正确的谓词。

您可以在此处找到文档.. https://framework.zend.com/apidoc/2.1/classes/Zend.Db.Sql.Predicate.In.html

您不必直接使用该课程,您可以...

基本示例:

$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