Apabila membangun dengan rangka kerja Go Buffalo, kita selalunya perlu menyemai pangkalan data untuk mengisi persekitaran ujian dan pembangunan dengan beberapa data awal. TOML ialah format fail konfigurasi yang ringkas dan mudah dibaca yang boleh digunakan untuk menentukan data. Jadi bagaimana kita menggunakan fail TOML untuk menyemai pangkalan data kita? Dalam artikel ini, editor PHP Xiaoxin akan memperkenalkan anda kepada kaedah mudah untuk menyemai pangkalan data menggunakan peranti TOML dalam persekitaran pembangunan rangka kerja Go Buffalo. Mari lihat!
Saya cuba menggunakan lekapan TOML untuk menyemai pangkalan data pembangunan saya dalam rangka kerja Go Buffalo. Walau bagaimanapun, saya tidak dapat mencari contoh atau dokumentasi yang jelas tentang cara melakukan ini.
Untuk menyemai pangkalan data anda boleh menggunakan grifts. Apabila membuat aplikasi baharu, grift pemegang tempat tiruan harus dijana pada grifts/db.go
seperti ini:
package grifts import "github.com/gobuffalo/grift/grift" var _ = grift.namespace("db", func() { grift.desc("seed", "seeds a database") grift.add("seed", func(c *grift.context) error { // add db seeding stuff here return nil }) })
Saya cuba menggunakan model.loadfixture("seed widgets")
dengan grift tetapi agak panik kerana ia tidak berada dalam persekitaran ujian. Saya tidak fikir terdapat sokongan langsung untuk pembenihan pangkalan data daripada pemasangan toml, tetapi ia akan menjadi ciri yang berguna. Walau bagaimanapun, melihat kod dalam loadfixture kita boleh membina pemuatan lekapan kita sendiri:
Andaikan anda mempunyai perlawanan untuk adegan bernama name = "seed widgets"
:
package grifts import ( "fmt" "os" "strings" "github.com/gobuffalo/grift/grift" "github.com/gobuffalo/suite/v4" "github.com/gobuffalo/suite/v4/fix" ) var _ = grift.Namespace("db", func() { grift.Desc("seed", "Seeds a database") grift.Add("seed", func(c *grift.Context) error { // The DB connection will connect to the environment set in `GO_ENV` (defaults to `test`) // Set this environment variable in your `.env` file to `development` // NOTE: it may be better to put seed fixtures in a different directory // to seperate concerns model, err := suite.NewModelWithFixtures(os.DirFS("./fixtures")) if err != nil { return err } sc, err := fix.Find("seed widgets") if err != nil { return err } for _, table := range sc.Tables { for _, row := range table.Row { q := "insert into " + table.Name keys := []string{} skeys := []string{} for k := range row { keys = append(keys, k) skeys = append(skeys, ":"+k) } q = q + fmt.Sprintf(" (%s) values (%s)", strings.Join(keys, ","), strings.Join(skeys, ",")) if _, err = model.DB.Store.NamedExec(q, row); err != nil { return err } } } return nil }) })
Atas ialah kandungan terperinci Bagaimanakah cara saya menggunakan lekapan TOML untuk menyemai pangkalan data saya dalam persekitaran pembangunan menggunakan rangka kerja Go Buffalo?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!