[英]Is there a way to query if array field contains a certain value in Doctrine2?
從Symfony2 + Doctrine開始。
我有一個包含User對象(fos_user)的表,我的架構包含一個'array'類型的角色列。
Doctrine通過將它們從php'array'序列化為'longtext'(在mysql的情況下)來保存這種類型的字段。
所以假設我將以下用戶保存到DB中:
User1: array(ROLE_ADMIN, ROLE_CUSTOM1)
User2: array(ROLE_ADMIN, ROLE_CUSTOM2)
User3: array(ROLE_CUSTOM2)
現在在我的控制器中,我想選擇所有設置了ROLE_ADMIN的用戶。 有沒有辦法編寫一個直接返回User1和User2的DQL查詢? 或者我是否需要獲取所有用戶以使Doctrine 取消序列化角色列,然后為每個用戶執行in_array('ROLE_ADMIN',$ user-> getRoles()) ?
我已經搜索了手冊的DQL部分 ,但到目前為止沒有發現任何類似於我的需求...
UPD:發現一個問題,同一件事情它包含一個工作查詢代碼
您可以簡單地使用本手冊中描述的LIKE
語句(是的,甚至是序列化對象)。
我建議你為角色創建一個實體類,並通過ManyToMany關聯將它與用戶實體連接起來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.