Symfony关系加载失败(null上的function getName())



我有一个具有多极关系和模型的Symfony应用程序,到目前为止运行良好。我有一个应用程序模型,具有按照这样定义的源关系

/**
 * @MaxDepth(2)
 * @ManyToOne(targetEntity="SourceSystem", inversedBy="apps")
 * @JoinColumn(name="sourceSystem_id", referencedColumnName="id")
 */
private $sourceSystem;

我现在尝试使用{{app.sourceSystem.name}}在视图中列出源名称,该名称因Impossible to access an attribute ("name") on a null variable in appstore_adminlist_apps.html.twig at line 25.而失败。

接下来,在我的控制器中,我尝试

 /**
 * @Route("/contentstore_admin/", name="appstore_list_apps")
 * @Method({"GET"})
 */
public function listAppsAction()
{
    $repository = $this->getDoctrine()->getRepository('AppBundle:App');
    $apps = $repository->findAll();
    /** @var App $app */
    foreach ($apps as $app) {
        dump($app->getSourceSystem()->getName());
    }
    // check if the user already has a trial license
    return $this->render('appstore_admin/list_apps.html.twig', [
        "apps" => $apps
    ]);
}

Call to a member function getName() on null 失败,但将系统名称打印到调试栏中。

我真的对这种行为感到困惑,并且想让它起作用。

因为 $app->getSourceSystem() can 返回 null值,您需要在使用它之前对其进行检查。

$sourceSystem = $app->getSourceSystem();
if ($sourceSystem) {
    $name = $sourceSystem->getName();
}

{% if app.sourceSystem %}
    {{app.sourceSystem.name}}
{% endif %}

如果您不需要 $sourceSystem是无效的,则可以更改nullable属性。

@JoinColumn(name="sourceSystem_id", referencedColumnName="id", nullable=false)

相关内容

  • 没有找到相关文章

最新更新