Symfony2 Doctrine2如果没有从db中提取,如何添加对象

时间:2014-01-13 10:56:54

标签: php symfony doctrine-orm repository

选中此示例:http://symfony.com/doc/current/book/doctrine.html#fetching-objects-from-the-database

我得到的是:

$results = $applicationsRepo->findByInName($appInNames);

其中appInNames是一个如下所示的数组:

array(
    app1_name => app1_name,
    app2_name => app2_name,
    app3_name => app3_name,
    ...
)

我想在找不到实体对象时创建它。如何检查是否返回了app1_name,如果没有创建一个?

1 个答案:

答案 0 :(得分:0)

如果您需要获取inName属性设置为app1_nameapp2_name等任何一个的所有实体的数组,并使用默认值(如果不存在),则可以使用findOneBy代替findBy,如果结果为NULL,则创建实体。

由于循环可能不是最有效的方法,但它可以满足您的需求:

$results = array();
foreach($appInNames as $appInName) {
    $app = $applicationsRepo->findOneByInName($appInName);
    if(!isset($app)) {
        // Create you entity here
    }
    $results[$appInName] = $app;
}

更有效的方法可能是编写自定义存储库并使用queryBuilder添加所有 OR 条件。您将在一个查询中获得所有现有实体,然后您必须解析结果以创建缺少的实体。