我有兩個實體一個任務和一個用戶。我怎樣才能創建一個「加入查詢」?如何在TYPO3中使用extbase執行連接語句?
- 我需要列出包括User.name在內的所有任務。
- 我還需要一個查詢尋找到User.name =「查克」
我怎樣才能實現這一目標與extbase(TYPO3 6.1)的所有任務。有什麼地方有一個很好的教程和例子嗎?
我有兩個實體一個任務和一個用戶。我怎樣才能創建一個「加入查詢」?如何在TYPO3中使用extbase執行連接語句?
我怎樣才能實現這一目標與extbase(TYPO3 6.1)的所有任務。有什麼地方有一個很好的教程和例子嗎?
在Extbase中,您可以查詢/尋址子對象的屬性。所以假設你的任務模型與用戶模型有關係,這很容易。
要列出所有任務,包括他們的用戶名,只需查詢TaskRepository(在你的控制器注入的話):
$tasks = $this->taskRepository->findAll();
$this->view->assign('tasks', $tasks);
現在,在你的液體模板,你可以遍歷任務:
<f:for each="{tasks}" as="task">
Name of task: {task.name}
Assigned user: {task.user.name}
</f:for>
您可以使用任務模型的每個屬性,包括子對象的屬性。
要找到指定的用戶任務,添加一個方法來你taskRepository,例如:
public function findByTaskAssignedUser($user) {
$query = $this->createQuery();
$query->matching($query->equals('user.name', $user));
return $query->execute();
}
因此,您將獲得在指定的用戶名$用戶匹配所有的任務對象。
你也可以使用$ query-> like作爲LIKE語句,當然你最好使用用戶的uid來執行安全的比較。不用說,如果是用戶提供的請求,您需要清理$ user。
最簡明的文檔來源是http://www.typovision.de/fileadmin/slides/ExtbaseFluidCheatSheetTypovision.pdf上的Extbase & Fluid Cheat Sheet。請查看「定製存儲庫查詢」。
有一個免費的書「TYPO3擴展與TYPO3和流體」,看到單獨的數據庫查詢章: http://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html
1. 可以讀取所有任務,並在您的TCA和你的DomainModel添加引用。如果您使用Extensionbuilder,則會自動生成。比你可以在樣的觀點看userinformation:
<f:for each="{Tasks}" as="task">
{task.reference.name}
</f:for>
2. 你應該在任務實體的引用。所以你可以在你的taskrepository中寫上'reference.name'這樣的函數
$query = $this->createQuery();
$query->matching(
$query->equals('reference.name', 'Chuck')
);
$results = $query->execute();
它有效。我在哪裏可以在文檔中找到它? – koalabruder
請參閱我的關於文檔的編輯。 – lorenz