2016-07-13 27 views
1

所以我試圖設置我的第一個擴展Typo3,我很掙扎。我想建立一個處理客戶回收的擴展。添加到存儲庫後獲取對象的UID

在提交輸入值後,我會將新客戶存儲在數據庫中,直接執行此步驟後,我將從數據庫中獲取它以查看他擁有哪個uid,在回收中存儲來自客戶的uid 。

所以我wan't與

$customer = $this->customerRepository->findByName($name); 

返回的結果改寫當前$customer-variable是不是真的客戶的目標甚至var_dump是說這是一個以客戶爲對象。我不能調用功能

$customer->getUid() 

以獲得此新客戶的當前uid。但是我需要客戶在我的回收對象中使用uid - 我該怎麼做?

下一個問題:每次查詢我會盡到DB像

->findAll(), findByIdentifier($identifier) 

我不知道爲什麼。他似乎無法找到storagePid,但我已正確設置了我的TypoScript。

我只能得到一個查詢時,我添加

$query->getQuerySettings()->setRespectStoragePage(FALSE); 

當狗被埋葬在這種情況下,任何想法?

非常感謝和抱歉,我的英文不好:P

+0

請將「下一個問題」分解爲單獨的問題bc。這是無關的。 – lorenz

回答

5

您最初的問題是很難沒有更多的細節來回答。客戶和回收之間的關係是什麼?如果客戶可以進行多次回收,那麼在客戶和回收之間建立1:n的關係將是一件好事。在這種情況下,您只需執行$customer->addReclamation($reclamation)並且不需要關心用戶UID。

至於你的倉庫調用,問題是你的調用得到你一個包含所有匹配對象的QueryResult。如果name確實是一個獨特的屬性,你可以做

$customer = $this->customerRepository->findOneByName($name); 

這看起來對所有客戶名稱等於$name(這應該是隻有一個),並返回第一個,所以你得到一個Customer對象。

但是,這是不是真的有必要,太:如果你堅持將客戶後的所有更改,你可以得到它的UID:

$this->customerRepository->add($customer); 
$this->persistenceManager->persistAll(); 
// Returns the customer uid 
$customerUid = $customer->getUid(); 

的PersistenceManager的可注射的是這樣的:

/** 
* @var \TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager 
* @inject 
*/ 
protected $persistenceManager; 
相關問題