2016-11-19 56 views
0

我寫了一個擴展,它隨機選取一個帶有鏈接(橫幅)的定義數量的圖像來顯示。數據庫中的TYPO3自定義擴展註冊展示

我想統計他們顯示的次數(印象)。也就是說,在隨機函數做出選擇之後,我希望將所選條目的數據庫字段impressions增加1。

這是域庫的相關部分:

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; 
} 
  • 我不知道如何處理 $query->execute()產生的對象...
  • 我不知道該怎麼寫入數據庫...
  • 我不知道該怎麼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()',並且下面添加到model/item.php中'public function increaseImpressions(){$ this-> impressions + = 1; }'...你的代碼給了一個致命的錯誤... – webMan

+0

你能否更新你的答案,以便有很好的參考... – webMan

+0

感謝您的反饋。然而,這個例子已經與'Whatever'域對象保持非常通用。當然,這必須根據你的特定擴展名和類名進行調整(我和其他人不應該知道)。這就是爲什麼我會選擇保持示例通用... ...#: –