因此,我正在爲我的應用程序製作一個內部消息系統。我需要選擇用戶是發送者還是接收者的所有消息。如何結合GQL查詢
GQL不支持「OR」查詢,所以我需要運行兩個查詢,將它們結合起來(結果)然後ORDER BY created DESC
。
不幸的是我找不到任何文檔或例子如何在Python中做到這一點。
PS:我的胡亂猜測是db.GqlQuery("SELECT * FROM Messages WHERE sender_id = :1 ORDER BY created DESC UNION SELECT * FROM Messages WHERE receiver_id = :1 ORDER BY created DESC", user_id)
PPS使用Python。:我的解決方法。
def get_messages(user_id):
sender_query = db.GqlQuery("SELECT * FROM Messages WHERE sender_id = :1 ORDER BY created DESC", user_id)
receiver_query = db.GqlQuery("SELECT * FROM Messages WHERE receiver_id = :1 ORDER BY created DESC", user_id)
message_query = []
for q in sender_query:
message_query.append(q)
for q in receiver_query:
if q not in message_query: #doesn't work if user sent a message to himself (different instaces of same entity)
message_query.append(q)
message_query.sort(key=operator.attrgetter('created'))
return message_query
還在尋找GQL代數上下的解決方案