Atribut backend_type = statis?

23

Dapatkah seseorang menjelaskan pentingnya / relevansi backend_type statis untuk suatu atribut?

Saya mengalami beberapa masalah dengan atribut yang tidak dimuat dan saya bertanya-tanya apakah ini backend_typeada hubungannya dengan itu?

Juga, apakah ini terkait dalam beberapa hal seperti apa yang dimasukkan ke dalam tabel datar?

Marty Wallace
sumber

Jawaban:

37

Atribut statis adalah atribut yang disimpan dalam tabel utama suatu entitas - untuk produk katalog catalog_product_entity,. Sebagai contoh, atribut skuproduk katalog didefinisikan sebagai static. Atribut statis selalu dimuat oleh Magento, dan berguna terutama jika Anda ingin mengambil informasi dengan cepat atau untuk mengoptimalkan pencarian data. Kelemahan dari tipe atribut ini adalah Anda tidak dapat memiliki nilai spesifik toko, yang merupakan salah satu keunggulan sistem Magento EAV.

Bahkan jika Anda mendefinisikan atribut sebagai static, Magento tidak akan memperlakukannya seperti itu kecuali jika Anda memiliki kolom yang sesuai di tabel entitas utama. Jika kolom tidak ada di sana, Magento memperlakukan atribut sebagai varchardefault dan mencarinya di tabel EAV varchar untuk model - untuk produk catalog_product_entity_varchar,.

Jika Anda ingin menggunakan atribut statis dalam proyek Anda, Anda harus melakukan 2 hal di skrip instal / pemutakhiran Anda. Pertama, Anda perlu menambahkan kolom ke tabel entitas utama, dengan definisi kolom yang benar. Selanjutnya, Anda perlu menginstal atribut Anda menggunakan addAttribute()metode ini, dan mendefinisikan atribut Anda sebagai static. Silakan merujuk ke skrip instal Mage_Cataloguntuk lebih memahami bagaimana hal-hal bekerja dalam kasus ini.

Jika Anda berencana untuk sering menjalankan kueri berdasarkan atribut statis khusus Anda, pertimbangkan untuk menambahkan indeks pada kolom baru untuk mempercepat pengambilan data.

fmrng
sumber
1
category_ids bersifat statis. itu tidak ada dalam tabel catalog_product_entity_varchar.
ahnbizcad
ringkasan: statis berarti nilainya adalah kolom catalog_product_entity, dan jika tidak, itu akan kembali ke memeriksa di catalog_product_entity_varchar.
ahnbizcad
1

Berikut ini contoh dari inti:

$installer->run("
    ALTER TABLE `{$installer->getTable('catalog/product')}` ADD `has_options` SMALLINT(1) NOT NULL DEFAULT '0';
");

$installer->addAttribute('catalog_product', 'has_options', array(
    'type' => 'static',
    'visible'=>false,
    'default' => false
));
Roman Snitko
sumber
1
Apa hubungannya dengan pertanyaan ini?
Marius
@Marius, ini hanyalah contoh cara menambahkan atribut statis.
Roman Snitko
Misalkan Anda menambahkan kolom langsung ke DB melalui MySQL. Bagaimana Anda bisa mengubah JENIS atribut produk yang ada menjadi STATIC? Pertanyaan: bisakah kita memperbarui tipe = statis di tabel tertentu dan itu akan berhasil?
snh_nl