sql >> Databasteknik >  >> RDS >> Mysql

Spela Framework Image BLOB-fil för testobjekt Yaml

Jag har upplevt samma typ av problem för ett tag sedan i ett projekt. Men eftersom jag inte kunde hitta ett sätt att lösa detta med fixturerna (eftersom databasen lagrar blob-objektet som en sträng som Pere förklarade ovan), skapade jag en lösning för att åtminstone lösa detta problem i ett testfallsscenario. Jag skapade följande fil /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());
            }
        }
    }
}

Det första jag gör är att fylla databasen med initiala data om det inte redan finns några 'Artikel' lagrade i databasen.
Den andra saken är att iterera över alla 'Artiklar' som spelas! precis lagrade i databasen, som läses från filen "my_fixtures.yml". Här för varje objekt kommer strängfältet att uppdateras som visas i exemplet ovan.

Jag vet att detta inte exakt är svaret på frågan i OP, men det ger en vänlig idé att komma runt det här problemet.

EDIT:I exemplet ovan antar jag att bilderna laddas upp manuellt till din bifogade mapp enligt din application.conf , och att varje bildnamn är som:"item_" med tillägget ".png"



  1. Java MySQL Tidsstämpel tidszon problem

  2. Django ManyToMany genom med flera databaser

  3. Väljer poster i ordning efter överordnat id

  4. Hur kan jag få det autoinkrementerade id:t när jag infogar en post i en tabell via jdbctemplate