【发布时间】:2017-07-19 10:27:18
【问题描述】:
我有类似的东西:
$languages = ["English", "German", "Spanish"];
工作实体:
/**
* @Flow\Entity
*/
class Job {
/**
* The name of first language for the job (M:1 unidirectional)
*
* @var \PATH\Language
* @ORM\ManyToOne
*/
protected $language1;
/**
* The name of second language for the job (M:1 unidirectional)
*
* @var \PATH\Language
* @ORM\ManyToOne
*/
protected $language2;
}
和语言实体:
/**
* @Flow\Entity
*/
class Language
{
/**
* The language name
*
* @var string
* @Flow\Identity
* @Flow\Validate(type="Text")
* @Flow\Validate(type="NotEmpty")
* @Flow\Validate(type="StringLength", options={ "minimum"=1, "maximum"=80})
* @ORM\Column(length=80)
*/
protected $name;
}
如何在 $languages 中获得所有具有语言 1 或语言 2 的工作? 我尝试了以下方法,但它不起作用...
我得到空结果。
$queryBuilder
->resetDQLParts()
->select("job")
->from("Job", "job")
->andWhere(
$queryBuilder->expr()->orX(
$queryBuilder
->innerJoin('job.language1', 'language1')
->andWhere($queryBuilder->expr()->in("language1.name", $languages)),
$queryBuilder
->innerJoin('job.language2', 'language2')
->andWhere($queryBuilder->expr()->in("language2.name", $languages))
)
);
有什么想法吗?
【问题讨论】:
-
有什么不好的?尝试通过在末尾使用
->getSQL()并回显它来打印 SQL 以查看不正确的地方。 -
无法执行 var_dump,因为它是通过 ajax 调用的
-
当然可以,死(var_dump($var));并检查来自 ajax 请求的 f12 开发工具响应。
-
我确实明白了 >>> 在此上下文中不允许使用“Doctrine\ORM\QueryBuilder”类型的表达式。异常代码 0 异常类型 InvalidArgumentException 在文件 Packages/Libraries/doctrine/orm/lib/Doctrine/ORM/Query/Expr/Base.php 第 95 行抛出
-
我仍然不确定问题出在哪里。不,可能没有必要。
标签: php doctrine-orm typo3-flow