这是我的options array
。
array(2) {
["status"] => string(1) "1"
["dateCreated"] => string(4) "DESC"
}
这是我的hardcoded doctrine findby code
:
$posts = Pluto::registry('doctrine')
->getRepository(ApplicationEntityPost::class)
->findBy(
['status'=>1],
['dateCreated'=>'DESC']
);
我正在寻找的是动态解决方案,以设置发现标准(n Criterias)。
我在某个地方找到了此代码(如果您能在ID上进行信息,我实际上不知道他们做什么,它可以欣赏它),并且它用于创建对象返回时工作。
$data = Pluto::registry('doctrine')
->getRepository($config->className)
->findBy(...array_values($newWhereClauses));
// or ->findBy(...$newWhereClauses);
正如您在将参数传递到findBy
方法时所看到的,您实际上不是传递数组,而是列列表和criterias
我如何将发现参数转换为从 original options array
如果您需要向方法发送几个(动态量)参数,则可以这样使用call_user_func_array()
:
$arguments = [
['status'=>1],
['dateCreated'=>'DESC']
];
$queryInstance = Pluto::registry('doctrine')
->getRepository(ApplicationEntityPost::class);
$posts = call_user_func_array(
[$queryInstance, 'findBy'],
$arguments
);
在此处阅读更多:http://php.net/manual/en/function.call-user-func-array.php