簡體   English   中英

有沒有辦法查詢數組字段是否包含Doctrine2中的某個值?

[英]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的用戶。 有沒有辦法編寫一個直接返回User1User2的DQL查詢? 或者我是否需要獲取所有用戶以使Doctrine 取消序列化角色列,然后為每個用戶執行in_array('ROLE_ADMIN',$ user-> getRoles())

我已經搜索了手冊DQL部分 ,但到目前為止沒有發現任何類似於我的需求...

UPD:發現一個問題,同一件事情它包含一個工作查詢代碼

您可以簡單地使用本手冊中描述的LIKE語句(是的,甚至是序列化對象)。

我建議你為角色創建一個實體類,並通過ManyToMany關聯將它與用戶實體連接起來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM