web-dev-qa-db-fra.com

ordre par tableau sérialisé meta_value

Bonjour, j'essaie de publier des articles en utilisant la requête wp. Juste un problème - j'essaie de trier les articles alphabétiquement selon une certaine méta_value. La chose est que cette meta_value est un tableau sérialisé. Existe-t-il un moyen simple de le faire sans avoir à le désérialiser? Merci!

a:1:{i:0;a:1:{s:7:"people";s:16:"Tanya Garca";}}

Btw, je ne peux pas changer la façon dont la meta_value est sauvegardée car j'utilise ce plugin qui l'enregistre automatiquement en série.

2
KT.

Existe-t-il un moyen simple de le faire sans avoir à le désérialiser?

Pas de manière fiable. Vous pouvez certainement ORDER BY cette valeur, mais le tri utilisera toute la chaîne sérialisée, ce qui vous donnera des résultats techniquement précis, mais pas les résultats souhaités. Vous ne pouvez pas extraire une partie de la chaîne pour le tri dans la requête elle-même. Même si vous écriviez du SQL brut, ce qui vous donnerait accès à des fonctions de base de données telles que SUBSTRING , je ne vois pas comment le faire de manière fiable. Vous auriez besoin d'une fonction MySQL pour désérialiser la valeur - vous devrez l'écrire vous-même.

Fondamentalement, si vous devez trier sur un meta_value, vous ne pouvez pas le stocker en série. Pardon.

Si vous ne pouvez pas modifier le mode de stockage de la valeur, vous devez extraire vos publications, les parcourir en boucle pour les trier, puis à nouveau pour afficher les résultats triés.

1
s_ha_dum