खोज…
एक मॉडल बनाना
मॉडल निर्माण
मॉडल कक्षाओं को Illuminate\Database\Eloquent\Model
विस्तार करना होगा। मॉडल के लिए डिफ़ॉल्ट स्थान /app
निर्देशिका है।
एक मॉडल वर्ग आसानी से कारीगर कमांड द्वारा उत्पन्न किया जा सकता है:
php artisan make:model [ModelName]
यह app/
डिफ़ॉल्ट रूप से एक नई PHP फ़ाइल बनाएगा, जिसका नाम [ModelName].php
, और इसमें आपके नए मॉडल के लिए सभी बॉयलरप्लेट शामिल होंगे, जिसमें एक मूल सेटअप के लिए आवश्यक वर्ग, नाम स्थान और उपयोग करना शामिल है।
यदि आप अपने मॉडल के साथ एक माइग्रेशन फ़ाइल बनाना चाहते हैं, तो निम्न कमांड का उपयोग करें, जहां -m
माइग्रेशन फ़ाइल भी उत्पन्न करेगा:
php artisan make:model [ModelName] -m
मॉडल बनाने के अलावा, यह एक डेटाबेस माइग्रेशन बनाता है जो मॉडल पर हुक होता है। डेटाबेस माइग्रेशन PHP फ़ाइल database/migrations/
में डिफ़ॉल्ट रूप से स्थित है। यह डिफ़ॉल्ट रूप से नहीं करता है - इसमें आईडी और created_at
/ updated_at
कॉलम के अलावा कुछ भी शामिल है, इसलिए आपको अतिरिक्त कॉलम प्रदान करने के लिए फ़ाइल को संपादित करना होगा।
ध्यान दें कि प्रोजेक्ट रूट से php artisan migrate
का उपयोग करके काम शुरू करने के लिए आपको माइग्रेशन (एक बार माइग्रेशन फ़ाइल सेट करने के बाद) को चलाना होगा
इसके अलावा, यदि आप बाद में कोई माइग्रेशन जोड़ना चाहते हैं, तो मॉडल बनाने के बाद, आप इसे चलाकर ऐसा कर सकते हैं:
php artisan make:migration [migration name]
उदाहरण के लिए कहें कि आप अपने कैट्स के लिए एक मॉडल बनाना चाहते थे, आपके पास माइग्रेशन के साथ या उसके बिना बनाने के लिए दो विकल्प होंगे। यदि आपके पास पहले से ही एक बिल्लियों की मेज थी या आप इस समय एक नहीं बनाना चाहते थे, तो आपने प्रवासन के बिना बनाना चुना।
इस उदाहरण के लिए हम एक माइग्रेशन बनाना चाहते हैं क्योंकि हमारे पास पहले से टेबल नहीं है इसलिए निम्न कमांड चलाएंगे।
php artisan make:model Cat -m
यह कमांड दो फाइल बनाएगी:
- ऐप फ़ोल्डर में:
app/Cat.php
- डेटाबेस फ़ोल्डर में:
database/migrations/timestamp_creat_cats_table.php
जिस फ़ाइल में हम रुचि रखते हैं वह बाद की है क्योंकि यह फ़ाइल है कि हम यह तय कर सकते हैं कि हम क्या चाहते हैं कि तालिका जैसी दिखे और उसमें शामिल हो। किसी भी पूर्वनिर्धारित प्रवासन के लिए हमें एक ऑटो इंक्रीमेंटिंग आईडी कॉलम और एक टाइमस्टैम्प कॉलम दिया जाता है।
माइग्रेशन फ़ाइल के एक्सट्रेक्ट के नीचे के उदाहरण में उपरोक्त पूर्वनिर्धारित कॉलम के साथ-साथ बिल्ली, उम्र और रंग का नाम शामिल है:
public function up()
{
Schema::create('cats', function (Blueprint $table) {
$table->increments('id'); //Predefined ID
$table->string('name'); //Name
$table->integer('age'); //Age
$table->string('colour'); //Colour
$table->timestamps(); //Predefined Timestamps
});
}
तो जैसा कि आप देख सकते हैं कि एक तालिका के लिए मॉडल और माइग्रेशन बनाना अपेक्षाकृत आसान है। फिर माइग्रेशन को निष्पादित करने और अपने डेटा बेस में बनाने के लिए आप निम्न कमांड चलाएंगे:
php artisan migrate
जो आपके डेटाबेस में कोई भी बकाया माइग्रेशन माइग्रेट करेगा।
मॉडल फ़ाइल स्थान
PSR4 की बदौलत मॉडल कहीं भी स्टोर किए जा सकते हैं।
डिफ़ॉल्ट मॉडल द्वारा तैयार किये जाते हैं app
का नाम स्थान के साथ निर्देशिका App
। अधिक जटिल अनुप्रयोगों के लिए आमतौर पर अपने खुद के फ़ोल्डरों के भीतर मॉडल को एक संरचना में संग्रहीत करने की सिफारिश की जाती है जो आपके एप्लिकेशन आर्किटेक्चर के लिए समझ में आता है।
उदाहरण के लिए, यदि आपके पास एक ऐसा अनुप्रयोग है जो मॉडल के रूप में फलों की एक श्रृंखला का उपयोग करता है, तो आप app/Fruits
नामक एक फ़ोल्डर बना सकते हैं और इस फ़ोल्डर के भीतर आप Banana.php
( StudlyCase नामकरण सम्मेलन रखते हुए) बना सकते हैं, फिर आप Banana वर्ग बना सकते हैं App\Fruits
नामस्थान में:
namespace App\Fruits;
use Illuminate\Database\Eloquent\Model;
class Banana extends Model {
// Implementation of "Banana" omitted
}
मॉडल कॉन्फ़िगरेशन
वाक्पटु "विन्यास पर सम्मेलन" दृष्टिकोण का अनुसरण करता है। बेस Model
वर्ग का विस्तार करके, सभी मॉडल नीचे सूचीबद्ध गुणों को प्राप्त करते हैं। जब तक ओवरराइड नहीं किया जाता है, तब निम्न डिफ़ॉल्ट मान लागू होते हैं:
संपत्ति | विवरण | चूक |
---|---|---|
protected $connection | DB कनेक्शन नाम | डिफ़ॉल्ट DB कनेक्शन |
protected $table | तालिका नाम | डिफ़ॉल्ट रूप से, क्लास का नाम snake_case में बदल जाता है और बहुवचन हो जाता है। उदाहरण के लिए, SpecialPerson special_people बन जाता है |
protected $primaryKey | टेबल पीके | id |
public $incrementing | यदि आईडी ऑटो-इंक्रीमेंटिंग हैं, तो यह इंगित करता है | true |
public $timestamps | इंगित करता है कि मॉडल को टाइमस्टैम्प किया जाना चाहिए | true |
const CREATED_AT | निर्माण टाइमस्टैम्प कॉलम का नाम | created_at |
const UPDATED_AT | संशोधन टाइमस्टैम्प कॉलम का नाम | updated_at |
protected $dates | विशेषताएँ जो टाइमस्टैम्प विशेषताओं के अतिरिक्त, डेटटाइम के लिए म्यूट की जानी चाहिए | [] |
protected $dateFormat | प्रारूप जिसमें दिनांक विशेषताएँ बनी रहेंगी | वर्तमान SQL बोली के लिए डिफ़ॉल्ट। |
protected $with | मॉडल के साथ उतारने के लिए रिश्ते | [] |
protected $hidden | मॉडल सीरियलाइजेशन में शामिल किए गए गुण | [] |
protected $visible | मॉडल क्रमांकन में विशेषता की अनुमति है | [] |
protected $appends | सहायक अभिगमकर्ताओं ने मॉडल क्रमांकन में जोड़ा | [] |
protected $fillable | विशेषताएँ जो बड़े पैमाने पर उपलब्ध हैं | [] |
protected $guarded | विशेषताएँ जो बड़े पैमाने पर असाइनमेंट से ब्लैक-लिस्टेड हैं | [*] (सभी विशेषताएँ) |
protected $touches | जिन रिश्तों को सहेज कर रखना चाहिए | [] |
protected $perPage | पेजेशन के लिए लौटने के लिए मॉडल की संख्या। | 15 |
संपत्ति | विवरण | चूक |
---|---|---|
protected $casts | विशेषताएँ जो देशी प्रकारों को डाली जानी चाहिए | [] |
किसी मौजूदा मॉडल को अपडेट करें
$user = User::find(1);
$user->name = 'abc';
$user->save();
आप एक बार update
का उपयोग करके कई विशेषताओं को भी अपडेट कर सकते हैं, जिन्हें बाद में save
का उपयोग करने की आवश्यकता नहीं है:
$user = User::find(1);
$user->update(['name' => 'abc', 'location' => 'xyz']);
आप किसी मॉडल को पहले से क्वेरी किए बिना भी अपडेट कर सकते हैं:
User::where('id', '>', 2)->update(['location' => 'xyz']);
यदि आप मॉडल पर updated_at
टाइमस्टैम्प में बदलाव को ट्रिगर नहीं करना चाहते हैं तो आप touch
विकल्प पास कर सकते हैं:
$user = User::find(1);
$user->update(['name' => 'abc', 'location' => 'xyz'], ['touch' => false]);