MongoDB Object Document Mapper (ODM) គឺដូចទៅនឹង Doctrine2 ORM ដូចជា ដំណើរការការងារនិងទស្សនវិស័យរបស់វាផងដែរ។ Bundle គឺទំនេរដែលអាចរួមបញ្ចូលនូវ Doctrine MongoDB ODM ទៅកាន់ Symfony ដើម្បីអោយវាមានភាពងាយស្រួលក្នុងការ configure និងប្រើប្រាស់។
១ ការតម្លើង
ដើម្បីប្រើប្រាស់នូវ MongoDB ODM អ្នកត្រូវការ libraries ចំនួនពីរ ដែលផ្ដល់ដោយ Doctrine និង bundle មួយដែលនឹងធ្វើការរួមបញ្ចូលពួកវាទៅក្នុង Symfony ។
២ ការតម្លើង bundle ជាមួយនឹង Composer
ដើម្បីតម្លើង DoctrineMongoDBBundle ជាមួយនឹង Composer គឺគ្រាន់តែបន្ថែមនូវកូដដូចខាងក្រោមទៅក្នុង composer.json file ៖
ពេលនេះអ្នកត្រូវ ដំណើរការនូវ command ខាងក្រោម (Composer’s update) ពី directory ដែលជាកន្លែងដែល composer.json file របស់អ្នកស្ថិតនៅ៖
ពេលនេះ Composer បានធ្វើការដោនឡូដ file តែចាំបាច់រួចហើយ បន្ទាប់មកទៀតវានឹងធ្វើការតម្លើង file ទាំងអស់នោះអោយអ្នក។
៣ ការចុះឈ្មោះ annotations និង bundle
បន្ទាប់ទៀតអ្នកត្រូវចុះឈ្មោះនូវ annotations library ដោយគ្រាន់តែបន្ថែមនូវ autoloader ដូចខាងក្រោម៖
ទាំងអស់នេះគឺធ្វើឡើងដើម្បី update AppKernel.php file របស់អ្នកនិងចុះឈ្មោះនូវ bundle ថ្មី៖
៤ ការ Configuration
អ្នកពិតជាត្រូវការនូវ មូលដ្ឋានគ្រឹះនៃការ configuration ដែលធ្វើការ sets up នូវ document manager ។ វិធីដែលងាយស្រួលនោះគឺបើក auto_mapping ដែលនឹង activate នូវ MongoDB ODM ៖
៥ ការបង្កើត Document Class
ពេលនេះយើងលើកឧទាហរណ៏មួយដែល យើងនឹងបង្កើត Product object មួយក្នុងការបង្ហាញនូវផលិតផលដែលមាននៅក្នុង application ដូចនេះសូមធ្វើការបង្កើត class មួយនៅក្នុង Document directory នៃ AcmeStoreBundle របស់អ្នក៖
Class តែងតែហៅដោយ document មានន័យថា basic class ដែលក្តោបនូវទិន្នន័យ គឺសាមញ្ញនិងអាចបំពេញនូវតម្រូវការនៃអាជីវកម្មបាន។
៦ ការបន្ថែម Mapping Information
Doctrine អនុញ្ញាតអោយអ្នកធ្វើការជាមួយ MongoDB តាមរយៈវិធីសាស្ត្រជាច្រើន។ Doctrine អាចអោយអ្នកធ្វើការចាប់យក Objects ទាំងមូលចេញមកក្រៅហើយក៏អាចបញ្ចូល Objects ចូលទៅក្នុង MongoDB បានផងដែរ។ ដើម្បីធ្វើបែបនេះបានអ្នកត្រូវបង្កើតនូវ metadata រឺក៏ configuration ដែលនឹងប្រាប់ទៅ Doctrine ថាតើ Product class ហើយនិង properties របស់វាត្រូវធ្វើការ mapped ទៅកាន់ MongoDB ដោយរបៀបណា។ metadata អាចជា លេខ ក្នុងទម្រង់ជាក់លាក់ណាមួយផ្សេងគ្នាដែលរួមមានទាំង YAML, XML រឺក៏ Product class ផ្ទាល់តែម្ដងតាមរយៈ ៖
៧ ការបង្កើតនូវ Getters និង Setters
ដើម្បីធ្វើការបង្កើតនូវ Getters និង Setters បានសូមវាយនូវ command ដូចខាងក្រោម៖
ត្រូវប្រាកដថាអ្នកបង្កើតវាឡើងសម្រាប់ Product class ។
៨ ការបញ្ចូល Objects ទៅក្នុង MongoDB
ពេលនេះអ្នកបានធ្វើការ mapped Product document រួចរាល់ហើយជាមួយនឹង getter និង setter methods ដូចនេះអ្នកអាចបញ្ចូលទិន្នន័យទៅក្នុង MongoDB បានហើយ។ នៅក្នុង controller ជារឿងល្អបំផុតដែលអ្នកត្រូវធ្វើនោះគឺបន្ថែមនូវកូដដូចខាងក្រោមទៅក្នុង DefaultController នៃ bundle៖
បន្ទាត់ទី៨ ដល់ទី១០៖ អ្នកបាន instantiate និងធ្វើការជាមួយនឹង $product object ដូចទៅនឹង PHP object ដទៃទៀតដែរ។
បន្ទាត់ទី១២៖ ធ្វើការចាប់យកនូវ Doctrine’s document manager object ដែលធ្វើការគ្រប់គ្រងទៅលើដំណើរការនៃការបញ្ចូលនិងចាប់យក objects ចេញមកក្រៅពី MongoDB ។
បន្ទាត់ទី១៣៖ persist() method ប្រាប់ទៅ Doctrine អោយគ្រប់គ្រងលើ $product object ។
បន្ទាត់ទី១៤៖ ពេល flush() method ត្រូវបានហៅ នោះ Doctrine ធ្វើការពិនិត្យទៅលើ objects ទាំងអស់ដែលវាគ្រប់គ្រងដើម្បីមើលអោយឃើញថាពួកវាកំពុងត្រូវបានបញ្ចូលទៅក្នុង MongoDB ។
៩ ការចាប់យក Objects ពី MongoDB
សូមធ្វើការ configured a route ដើម្បីបង្ហាញនូវ Product ដោយផ្អែកទៅលើតម្លៃនៃ id របស់វា៖
ពេលអ្នក query សម្រាប់ប្រភេទជាក់លាក់នៃ object អ្នកតែងតែប្រើនូវអ្វីដែលអ្នកស្គាល់នោះគឺ repository ហើយអ្នកអាចចូលទៅកាន់ repository object នៃ document class តាមរយៈ៖
អ្នកក៏អាចចូលទៅកាន់ sorts method ដ៏ពេញនិយមទាំងអស់នេះបានផងដែរ៖
អ្នកក៏អាចប្រើប្រាស់នូវ findBy() និង findOneBy() method ដើម្បីងាយស្រួលក្នុងចាប់យក objects ដោយផ្អែកលើលក្ខខណ្ឌ័ជាច្រើនផងដែរ៖
១០ ការ Update Object
ដើម្បីធ្វើការ Update object គឺត្រូវធ្វើក្នុង update action នៅក្នុង controller៖
ចំណុចសំខាន់បីធំៗក្នុងការ update៖
ទី១ ចាប់យក object ពីក្នុង Doctrine
ទី២ ធ្វើការកែប្រែ object
ទី៣ ហៅ flush() លើ document manager
១១ ការលុប Object
Remove() method អាចជួយអ្នកបានក្នុងការលុប Object នៃ document manager៖
១២ ការប្រើប្រាស់ Query Builder
Doctrine’s ODM ភ្ជាប់មកជាមួយនូវ query “Builder” object ដែលអនុញ្ញាតអោយអ្នកបង្កើតនូវ query មួយ នៅពេលដែលអ្នកចង់បានវា។ ប្រសិនបើអ្នកប្រើ IDE អ្នកអាចប្រើនូវ auto-completion ដោយគ្រាន់តែវាយនូវឈ្មោះរបស់ method ។ នេះជាអ្វីដែលមាននៅក្នុង controller៖
សរុបសេចក្ដីមក Doctrine គឺធ្វើការផ្ដោតសំខាន់ទៅលើ objects និងធ្វើអោយ application របស់អ្នកកាន់តែគួរអោយចង់ប្រើ ហើយមួយវិញទៀតគឺវាយកចិត្តទុកដាក់ទៅលើការបញ្ចូលនូវ object ទៅ MongoDB ។ នេះក៏ព្រោះតែ Doctrine អនុញ្ញាតអោយអ្នកប្រើនូវ PHP object ផ្សេងទៀតដែលផ្ទុកនូវទិន្នន័យរបស់អ្នក និងពឹងផ្អែកទៅលើការ mapping metadata information ដែល map នូវ object’s data ទៅកាន់ MongoDB collection។