addAttribute () مقابل addColumn ()؟
-
12-12-2019 - |
سؤال
مع العلم أني سؤال مماثل.سؤالي أكثر عمومية، وهو ما الذي سيحدث لكلا الاتصالين سواء قمت بالفعل بإنشاء عمود قاعدة بيانات أم لا.
يحرر
أنا أعرف addColumn()
سيضيف عمود جدول حقيقي، ولكن عندما أتعمق في بعض الوحدات الأساسية، فإن بعضها يستدعي كليهما addColumn()
و addAttribute()
إلى نفس المجال.
ما الفرق بينهم؟
تحرير 2
لأن addAttribute()
يبدو أن EAV مرتبط بي كثيرًا، وبعد إجراء بعض الأبحاث وجدت أيضًا بعض الأسماء المشابهة مثل addAttributeSet()
و addAttributeSetNames()
.
كيف تختلف عن بعضها البعض؟
المحلول
دعونا نأخذ الأمر خطوة بخطوة.
addColumn
يضيف عمودًا إلى الجدول.addAttribute
يضيف سمة جديدة لكيانات EAV.لذلك سيتم إنشاء سجل جديد فيeav_attribute
طاولة.- الاستثناء:بالنسبة لوحدة المبيعات،
addColumn
وaddAttribute
افعل نفس الشيء.يقومون بإضافة عمود إلى الجدول.والسبب هو التوافق مع الإصدارات السابقة.قبل الإصدار 1.4، كانت كيانات المبيعات (الطلبات، الفواتير، الشحنات، الأصناف، ...) هي EAV لذا كان عليك استخدامهاaddAttribute
.بدءًا من 1.4، تكون كيانات المبيعات مسطحة لذا يتعين عليك استخدامهاaddColumn
.ولكن بالنسبة للتوافق مع الإصدارات السابقة، بدءًا من الإصدار 1.4،addAttribute
هو مجرد غلاف لaddColumn
. addAttributeSet
يستخدم لكيانات EAV ويفعل ما يقوله.يقوم بإنشاء مجموعة سمات جديدة لهذا الكيان.أعتقد أنه يتم استخدامه للمنتجات فقط، لأن جميع كيانات EAV الأخرى (الفئة والعميل وعنوان_العميل) تستخدم مجموعة سمات واحدة.addAttributeSetNames
- لم أجد أي حدوث لهذا في أي مكان في الكود الأساسي.
لا تنتمي إلى magento.stackexchange