我想從Tx_Extbase_Domain_Repository_FrontendUserRepository運行一個簡單的查詢。除了findByUid(),我找不到任何工作,甚至沒有findAll()。Tx_Extbase_Domain_Repository_FrontendUserRepository-> findAll()not in typo3 4.5.30?
在我的控制器我有這樣的代碼,這似乎工作:
/**
* @var Tx_Extbase_Domain_Repository_FrontendUserRepository
*/
protected $userRepository;
/**
* Inject the user repository
* @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository
* @return void */
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {
$this->userRepository = $userRepository;
}
/**
* action create
*
* @param Tx_BpsCoupons_Domain_Model_Coupon $newCoupon
* @return void
*/
public function createAction(Tx_BpsCoupons_Domain_Model_Coupon $newCoupon) {
...... some code .....
$user = $this->userRepository->findByUid(($GLOBALS['TSFE']->fe_user->user[uid]));
$newCoupon->setCreator($user);
...... some code .....
}
但在其他功能我想不是UID而是由fe_users列名爲vipnumber(int列)來查找用戶,以便我試圖
/**
* check to see if there is already a user with this vip number in the database
* @param string $vip
* @return bool
*/
public function isVipValid($vip) {
echo "<br/>" . __FUNCTION__ . __LINE__ . "<br/>";
echo "<br/>".$vip."<br/>";
//$ret = $this->userRepository->findByUid(15); //this works!! but
$query = $this->userRepository->createQuery();
$query->matching($query->equals('vip',$vip));
$ret = $query->execute(); //no luck
.................
而且也沒有這個
$ret = $this->userRepository->findAll();
怎麼能一個工作,但不是TH其他人?在我的設置中,我已經把 config.tx_extbase.persistence.classes.Tx_Extbase_Domain_Model_FrontendUser.mapping.recordType> 這似乎是必要的fiondByUid工作,我是不是阻止另一個工作?
我使用TYPO3 v 4.5.30與extbase 1.3
感謝
嗨丹尼爾,感謝您的答覆。我的擴展程序不會向fe_users添加列,但會使用由另一個擴展添加的列。我如何將它添加到TCA或我的模型?有什麼地方需要添加關於recordtype或storagepid的地方嗎? –
爲什麼不使用$ query = $ this-> userRepository-> createQuery();在自己的倉庫之外?這是一個公開的方法。 –
那麼,如果是由另一部分添加該列,那麼最有可能的TCA是照顧關閉(你可以隨時查詢您的後端。配置 - > TCA-> fe_users->列。您的字段必須apear那裏。至於模型我編輯我的答案 – Daniel