खोज…


एक मॉडल बनाना

मॉडल निर्माण

मॉडल कक्षाओं को 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

यह कमांड दो फाइल बनाएगी:

  1. ऐप फ़ोल्डर में: app/Cat.php
  2. डेटाबेस फ़ोल्डर में: 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
5.0
संपत्ति विवरण चूक
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]);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow