PHP के लिए ORM: तुलना और उदाहरण
\n\nORM (Object-Relational Mapping) PHP कोड और रिलेशनल डेटाबेस के बीच एक मध्यवर्ती परत है। यह तालिकाओं की पंक्तियों को ऑब्जेक्ट में और SQL क्वेरी को मेथड में बदलता है। PHP के लिए कई परिपक्व ORM समाधान मौजूद हैं। इस लेख में हम तीन सबसे लोकप्रिय ORM पर चर्चा करेंगे: Doctrine, Eloquent (Laravel से) और Cycle। आप उनके दर्शन, सिंटैक्स जानेंगे और तैयार कोड उदाहरण प्राप्त करेंगे।
\n\n1. Doctrine ORM — Data Mapper
\n\nDoctrine PHP के लिए सबसे शक्तिशाली और परिपक्व ORM है। यह Data Mapper पैटर्न का उपयोग करता है: एंटिटी (Entity) डेटाबेस के बारे में नहीं जानती, और डेटाबेस के साथ सारा काम रिपॉजिटरी और एंटिटी मैनेजर EntityManager के माध्यम से किया जाता है।
// Doctrine में एंटिटी का उदाहरण\nuse Doctrine\\ORM\\Mapping as ORM;\n\n/**\n * @ORM\\Entity\n * @ORM\\Table(name="users")\n */\nclass User\n{\n /** @ORM\\Id @ORM\\Column(type="integer") @ORM\\GeneratedValue */\n private int $id;\n\n /** @ORM\\Column(type="string", length=100) */\n private string $name;\n\n public function getName(): string\n {\n return $this->name;\n }\n\n public function setName(string $name): void\n {\n $this->name = $name;\n }\n}\n\n// सहेजना और प्राप्त करना\n$user = new User();\n$user->setName('अलेक्से');\n$entityManager->persist($user);\n$entityManager->flush();\n\n$users = $entityManager->getRepository(User::class)->findAll();\n\n2. Eloquent ORM — Active Record
\n\nEloquent Laravel फ्रेमवर्क का ORM है। यह Active Record पैटर्न का उपयोग करता है: प्रत्येक ऑब्जेक्ट स्वयं जानता है कि डेटाबेस में खुद को कैसे सहेजना है। कोड संक्षिप्त और सहज है, तेजी से विकास के लिए आदर्श है।
\n\n// Eloquent मॉडल\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass User extends Model\n{\n protected $table = 'users';\n protected $fillable = ['name'];\n}\n\n// रिकॉर्ड बनाना\n$user = User::create(['name' => 'मारिया']);\n\n// पढ़ना\n$users = User::where('name', 'like', '%मा%')->get();\n\nforeach ($users as $user) {\n echo $user->name;\n}\n\n// अपडेट करना\n$user = User::find(1);\n$user->name = 'ओल्गा';\n$user->save();\n\n3. Cycle ORM — हाइब्रिड दृष्टिकोण
\n\nCycle Spiral फ्रेमवर्क के लेखकों द्वारा बनाया गया एक आधुनिक ORM है। यह Data Mapper और Active Record की सर्वोत्तम विशेषताओं को जोड़ता है। स्कीमा कैशिंग और मैजिक की अनुपस्थिति के कारण यह Doctrine से तेज काम करता है। सख्त टाइपिंग का समर्थन करता है।
\n\n// Cycle एंटिटी\nuse Cycle\\Annotated\\Annotation as Cycle;\n\n/**\n * @Cycle\\Entity\n * @Cycle\\Table(name="users")\n */\nclass User\n{\n /** @Cycle\\Column(type="primary") */\n public int $id;\n\n /** @Cycle\\Column(type="string") */\n public string $name;\n}\n\n// सहेजना\n$user = new User();\n$user->name = 'इवान';\n$orm->persist($user);\n$orm->run();\n\n// खोज\n$users = $orm->getRepository(User::class)->select()->fetchAll();\n\nPHP के लिए ORM की तुलना
\n\n| विशेषता | \nDoctrine | \nEloquent | \nCycle | \n
|---|---|---|---|
| पैटर्न | \nData Mapper | \nActive Record | \nहाइब्रिड | \n
| प्रदर्शन | \nमध्यम | \nउच्च (कैश के साथ) | \nउच्च | \n
| फ्रेमवर्क से संबंध | \nस्वतंत्र | \nLaravel | \nSpiral / स्वतंत्र | \n
| माइग्रेशन जनरेशन | \nअंतर्निहित | \nArtisan के माध्यम से | \n
पुस्तकालय में भीअनुशंसाएँ |