Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Play Framework Image BLOB-Datei für Testobjekt Yaml

Ich habe das gleiche Problem vor einiger Zeit bei einem Projekt erlebt. Da ich jedoch keinen Weg finden konnte, dies mit den Fixtures zu lösen (da die Datenbank das Blob-Objekt als String speichert, wie Pere oben erklärt hat), habe ich einen Workaround erstellt, um dieses Problem zumindest in einem Testfall-Szenario zu lösen. Ich habe folgende Datei erstellt /app/job/Bootstrap.java:

import play.test.*;
import play.jobs.*;
import play.db.DB;
import models.*;

import java.util.List;

@OnApplicationStart
public class Bootstrap extends Job {
     public void doJob() {
        // Load default data if the database is empty
        if(Item.count() == 0) {
            Fixtures.loadModels("my_fixtures.yml");
            List<Item> allItems = Item.findAll();
            for (Item a: allItems){
                DB.execute("UPDATE `Item` SET image='item_" + a.name.toLowerCase() + ".png|image/png' WHERE id=" + a.getId());
            }
        }
    }
}

Als Erstes fülle ich die Datenbank mit Anfangsdaten, wenn noch kein 'Gegenstand' in der Datenbank gespeichert ist.
Als Zweites iteriere ich über alle 'Gegenstände', die abgespielt werden! nur in der Datenbank gespeichert, die aus der Datei „my_fixtures.yml“ gelesen werden. Hier wird für jedes Element das Zeichenfolgenfeld aktualisiert, wie im obigen Beispiel gezeigt.

Ich weiß, dass dies nicht genau die Antwort auf die Frage im OP ist, aber es gibt eine Art Idee, dieses Problem zu umgehen..

EDIT:In dem oben angegebenen Beispiel gehe ich davon aus, dass die Bilder manuell in Ihren Anhangsordner hochgeladen werden, wie in Ihrer application.conf angegeben , und dass jeder Bildname wie folgt lautet:"item_" mit der Erweiterung ".png"