2017-02-27 8 views
0

TYPO3 6.2の拡張機能を開発したいと思います。TYPO3リポジトリエクストラベースにデータを追加

コントローラクラスでは、「fetchFeUsersAction」というアクションを作成しました。 このアクションは、モデルのextensionbuilderから作成されたテーブルのテーブルfe_usersから一連のデータをロードします。リポジトリの取得ユーザーに

関数は次のようになります。これは非常にうまく動作します

public function getFeUsers() 
{ 
    /** @var Query $q */ 
    $q = $this->createQuery(); 
    $q->statement('SELECT * from fe_users'); 
    $data = $q->execute(true); 

    return $data; 
} 

は、しかし、今、私は、このアクションと私のモデルにテーブルfe_usersからの結果を格納したい:

はここ
public function fetchFeUsersAction() 
{ 
    $data = $this->adressRepo->getFeUsers(); 
    foreach ($data as $feuser) { 
     /** @var Adresse $address */ 
     $address = $this->objectManager->get(Adresse::class); 

     $q= $this->adressRepo->createQuery(); 
     $q->matching(contains('email', $feuser['email'])); 
     $contain= $q->execute(); 

     if($contain==NULL){ 
     $address->setEmail($feuser['email']); 
     $this->adressRepo->add($address); 
    } 

    } 
    $this->redirect('list'); 
} 

私はメールアドレスは、すでに私のテーブルに格納されているかどうかを確認します。 メールアドレスが保存されていない場合は、モデルに追加する必要があります。 しかし、それは動作しません。空のテーブルでも。条件がなければ、それは非常にうまく動作します。

答えて

1

ExtbaseはDBに完全なデータを後で保存します。

/** @var \TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager */ 
$persistenceManager = GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager::class); 
$persistenceManager->persistAll(); 

現在、ちょうど私の私の拡張機能のからそれをコピーし、テストされていない:あなたはこのように、私は考えて手動で永続化する必要があります。しかしそこには、同じ問題が存在するかどうかを確認する必要がありました。

これは少し役に立ちます。

+0

$ this-> objectManager-> get(\ TYPO3 \ CMS \ Extbase \ Persistence \ Generic \ PersistenceManager :: class) - > persistAll(); –

+0

ありがとうポール! Danielの場合は、基本的なActionControllerを拡張したクラスの中で "新しい/正しい"方法を使用します。通常、拡張コントローラー。私の場合、私はそれを拡張していない別のクラスを持っています。 – HR123

関連する問題