PHP के लिए ORM: Doctrine, Eloquent और Cycle की तुलना — कोड उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP के लिए ORM: तुलना और उदाहरण

\n\n

ORM (Object-Relational Mapping) PHP कोड और रिलेशनल डेटाबेस के बीच एक मध्यवर्ती परत है। यह तालिकाओं की पंक्तियों को ऑब्जेक्ट में और SQL क्वेरी को मेथड में बदलता है। PHP के लिए कई परिपक्व ORM समाधान मौजूद हैं। इस लेख में हम तीन सबसे लोकप्रिय ORM पर चर्चा करेंगे: Doctrine, Eloquent (Laravel से) और Cycle। आप उनके दर्शन, सिंटैक्स जानेंगे और तैयार कोड उदाहरण प्राप्त करेंगे।

\n\n

1. Doctrine ORM — Data Mapper

\n\n

Doctrine PHP के लिए सबसे शक्तिशाली और परिपक्व ORM है। यह Data Mapper पैटर्न का उपयोग करता है: एंटिटी (Entity) डेटाबेस के बारे में नहीं जानती, और डेटाबेस के साथ सारा काम रिपॉजिटरी और एंटिटी मैनेजर EntityManager के माध्यम से किया जाता है।

\n\n
// 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\n

2. Eloquent ORM — Active Record

\n\n

Eloquent 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\n

3. Cycle ORM — हाइब्रिड दृष्टिकोण

\n\n

Cycle 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\n

PHP के लिए ORM की तुलना

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
विशेषताDoctrineEloquentCycle
पैटर्नData MapperActive Recordहाइब्रिड
प्रदर्शनमध्यमउच्च (कैश के साथ)उच्च
फ्रेमवर्क से संबंधस्वतंत्रLaravelSpiral / स्वतंत्र
माइग्रेशन जनरेशनअंतर्निहितArtisan के माध्यम से

अनुशंसाएँ