从数组动态设置方法参数(使用Doctrine中的FindBy方法)

时间:2016-12-23 00:42:04

标签: php doctrine-orm doctrine

这是我的options array

array(2) {
 ["status"] => string(1) "1"
 ["dateCreated"] => string(4) "DESC"
}

这是我的hardcoded doctrine findby code

$posts = Pluto::registry('doctrine')
 ->getRepository(\Application\Entity\Post::class)
 ->findBy(
    ['status'=>1],
    ['dateCreated'=>'DESC']
);

我正在寻找的是设置findBy标准的动态解决方案(N标准)

我在某个地方得到了这个代码(3个点,我实际上并不知道他们是怎么做的,所以如果你可以获得信息,那也很喜欢它)并且它适用于创建对象但这是我已经走了多远(哪个没有工作,因为它返回。

$data = Pluto::registry('doctrine')
   ->getRepository($config->className)
   ->findBy(...array_values($newWhereClauses));

   // or ->findBy(...$newWhereClauses);

正如您所看到的,当您将参数传递给findBy方法时,您实际上并未传递数组,而是列和列标准列表

如何将findBy参数从original options array

动态转换为

1 个答案:

答案 0 :(得分:0)

如果您需要向方法发送多个(动态数量)参数,可以像这样使用$arguments = [ ['status'=>1], ['dateCreated'=>'DESC'] ]; $queryInstance = Pluto::registry('doctrine') ->getRepository(\Application\Entity\Post::class); $posts = call_user_func_array( [$queryInstance, 'findBy'], $arguments );

java

在此处阅读更多内容:http://php.net/manual/en/function.call-user-func-array.php