[英]Zend Db Where in
我在 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
生產中使用var_dump
。
我認為您需要使用 In Predicate 作為方法需要這樣做的地方,但如果給定正確的數組或字符串,該方法還將為您創建正確的謂詞。
你可以在這里找到文檔.. 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-have
請注意 where 方法的第二個參數是組合類型,即 AND 或 OR
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.