2017-12-15 7 views
0

しようとすると、データのメンバ関数へのコール(存続)とエラーが出ます:データベースへのヌル

Uncaught Error: Call to a member function persist() on null in

public function addNewPostAction() 
    { 
     // Create new Post entity.. 
    // $entityManager = $container->get('doctrine.entitymanager.orm_default'); 
     $post = new Post(); 
     $post->setTitle('Top 10+ Books about Zend Framework 3'); 
     $post->setContent('Post body goes here'); 
     $post->setStatus(Post::STATUS_PUBLISHED); 
     $currentDate = date('Y-m-d H:i:s'); 
     $post->setDateCreated($currentDate); 
     $this->entityManager->persist($post); 
     $this->entityManager->flush(); 

    } 

UPDATE: エラー: のZend \ MVC \コントローラ\ PluginManager :: GET上記の2つのサンプルから

public function addNewPostAction() 
{ 
    // Create new Post entity.. 
    // $entityManager = $container->get('doctrine.entitymanager.orm_default'); 
    $post = new Post(); 
    $post->setTitle('Top 10+ Books about Zend Framework 3'); 
    $post->setContent('Post body goes here'); 
    $post->setStatus(Post::STATUS_PUBLISHED); 
    $currentDate = date('Y-m-d H:i:s'); 
    $dm = $this->get('doctrine.odm.mongodb.document_manager'); 
    $dm->persist($post); 
    $dm->flush(); 
} 
+0

https://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-:あなたが名前myAwesomePluginでプラグインを定義する場合、あなたは、あなたの行動でそれをアクセスすることができますPHP/12769983#12769983 – Sammitch

答えて

1

を取得するためのインスタンスを取得または作成することができませんでした、あなたが教義 `sのエンティティマネージャを取得しようとしている明白です。

第一サンプル:おそらくコントローラのプロパティ$のEntityManagerがコメントしたコード「$のEntityManager = $、コンテナ> GET( 'doctrine.entitymanager.orm_default' から、また、設定されていない

$this->entityManager 

); "エンティティマネージャを取得しようとしているのは明らかです。

第二サンプル:

$this->get('doctrine.odm.mongodb.document_manager'); 

私は、これはsymfonyの例からであると仮定します。

とにかく、あなたのコントローラに教義マネージャを取得するために、あなたは、それを注入引数としてそれを受け入れるためにあなたのコントローラのコンストラクタを変更する必要があります。

class IndexController extends AbstractActionController 
{ 
    private $doctrineManager; 

    public function __construct($doctrineManager) 
    { 
     $this->doctrineManager = $doctrineManager; 
    } 

、その後、あなたにあなたのコントローラの工場に教義マネージャを注入module.config.php:

'controllers' => [ 
    'factories' => [ 
     Controller\IndexController::class => function ($container) { 

      return new Controller\IndexController(
       $container->get('doctrine.odm.mongodb.document_manager') 
      ); 
     }, 
     // ... 
    ], 
], 

サイドノート:Zendのは、未定義メートルをしようとするため、 "のZend \ MVC \コントローラ\ PluginManagerは::フェッチまたはを取得するためのインスタンスを作成することができませんでしたGET" スローされるエラーそれらをプラグインに解決するためのエゴード、例えば。

$this->myAwesomePlugin(); 
関連する問題