2016-11-19 11 views
0

表示するリンク(バナー)で定義された数の画像をランダムに選択する拡張機能を作成しました。TYPO3カスタム拡張レジスタデータベースのインプレッション

表示回数(インプレッション数)をカウントしたいと思います。つまり、ランダム関数が選択された後、選択したエントリのデータベースフィールドimpressionsを1つ増やしたいとします。

これは、ドメインリポジトリの適切な部分である:私は $query->execute()によって得られたオブジェクトを処理する方法がわからない

public function findPartnerList($entryNumber = 6) { 

    $entries = $this->createQuery()->execute()->count(); 
    $offset = mt_rand(0, max(0, ($entries - $entryNumber))); 

    ... // code refers to a class that picks random 

    $result = $query->execute(); 

    ... // field:impressions should get increased by one for all uid's in $result 

    return $results; 
} 
  • ...
  • 私はどのように知りません私は1つでフィールドimpressionsを向上させる方法がわからない
  • ...データベースへの書き込み...

答えて

1

基本的には、コントローラのドメインオブジェクトに対する操作はリポジトリではなく、コントローラでのみ行う必要があります.ORMレイヤは、OOPドメインモデルの世界とデータベースの間の接続に過ぎません。例えばWhateverController

...

... 
/** @var Whatever[] $items */ 
$items = $this->whateverRepository->findPartnerList(); 
foreach ($items as $item) { 
    $item->setImpressions($item->getImpressions() + 1); 
    $this->whateverRepository->update($item); 
} 
... 
+0

十分近くなります! 'setImpressions($ item-> getImpressions()+ 1)'は 'increaseImpressions()'でなければならず、次のようにモデル/ item.phpに追加されています。 'public function increaseImpressions(){$ this-> impressions + = 1; } '...あなたのコードで致命的なエラーが発生しました... – webMan

+0

あなたの回答を更新して良いリファレンスが残るようにすることができますか? – webMan

+0

フィードバックいただきありがとうございます。しかし、この例は、 'Whatever'ドメインオブジェクトでは非常に一般的なままです。もちろん、それはあなたの特定の拡張とクラス名(私と他の人が気づくべきではない)に合わせて調整しなければなりませんでした。だから、私はジェネリックの例を保つことを選んだのです... –

関連する問題