లారావెల్ అనువర్తనంలో రిపోజిటరీ డిజైన్ నమూనాను ఉపయోగించండి

లారావెల్ మరియు Vue.js తో టాస్క్ అనువర్తనాన్ని ఎలా నిర్మించాలో నేను ఇంతకు ముందు వ్రాశాను. లారావెల్ అనేది స్కేలబుల్ వెబ్ అనువర్తనాలు మరియు API లను నిర్మించడానికి ఒక PHP ఫ్రేమ్‌వర్క్. Vue.js అనేది జావాస్క్రిప్ట్ ఫ్రేమ్‌వర్క్ మరియు j క్వెరీ లేదా రియాక్ట్‌కు ప్రత్యామ్నాయం.

Start ప్రారంభించండి

ఈ ట్యుటోరియల్‌లో మేము మునుపటి ట్యుటోరియల్‌లో నిర్మించిన అనువర్తనానికి కార్యాచరణను జోడించబోతున్నాము. గితుబ్ రెపోను క్లోన్ చేయండి, కంపోజర్ ఇన్‌స్టాల్‌ను అమలు చేయండి, npm ఇన్‌స్టాల్ చేయండి మరియు మీ డేటాబేస్‌కు కనెక్ట్ చేయండి.

$ mysql -uroot -p
mysql> డేటాబేస్ సృష్టించండి laravelTaskApp;

మీరు ఈ సమయంలో చిక్కుకుంటే, MySQL మరియు ప్రారంభ లారావెల్ సెటప్‌ను ఇన్‌స్టాల్ చేయడం గురించి నేను వ్రాసిన ఇతర కథనాలను చూడండి. లోకల్ హోస్ట్ వద్ద: 8000 మీరు అసమకాలికంగా పనులను జోడించి తొలగించే అనువర్తనాన్ని చూడవచ్చు. అంటే ఇది వెబ్‌పేజీని రిఫ్రెష్ చేయకుండా ఆపరేషన్లు చేస్తుంది మరియు తాజా డేటాను ప్రదర్శిస్తుంది.

మునుపటి ట్యుటోరియల్‌లో మేము నిర్మించిన టాస్క్ అనువర్తనం.

రిపోజిటరీ డిజైన్ సరళి

మునుపటి ట్యుటోరియల్‌లో మేము మా అప్లికేషన్ లాజిక్ అంతా కంట్రోలర్‌లో రాశాము. అభివృద్ధికి ప్రత్యామ్నాయ విధానం ఉంది, ఇది రిపోజిటరీస్ అని పిలువబడే PHP తరగతులకు కొన్ని కాల్‌లను సంగ్రహిస్తుంది. మేము కంట్రోలర్ల నుండి మోడళ్లను విడదీయగలము మరియు సంక్లిష్టమైన ప్రశ్నలకు చదవగలిగే పేర్లను కేటాయించగలము.

రిపోజిటరీ సరళిని ఉపయోగించడానికి మేము మా అనువర్తనాన్ని రీఫ్యాక్టర్ చేయబోతున్నాము. మొదటి దశ అనువర్తనం / రిపోజిటరీలు / రిపోజిటరీ.హెచ్‌పి కోసం ఫైల్‌ను సృష్టించడం.

 మోడల్ = $ మోడల్;
    }

    // మోడల్ యొక్క అన్ని సందర్భాలను పొందండి
    పబ్లిక్ ఫంక్షన్ అన్నీ ()
    {
        return $ this-> model-> all ();
    }

    // డేటాబేస్లో క్రొత్త రికార్డును సృష్టించండి
    పబ్లిక్ ఫంక్షన్ క్రియేట్ (శ్రేణి $ డేటా)
    {
        return $ this-> model-> create ($ data);
    }

    // డేటాబేస్లో రికార్డును నవీకరించండి
    పబ్లిక్ ఫంక్షన్ నవీకరణ (శ్రేణి $ డేటా, $ id)
    {
        $ record = $ this-> find ($ id);
        తిరిగి $ రికార్డ్-> నవీకరణ ($ డేటా);
    }

    // డేటాబేస్ నుండి రికార్డును తొలగించండి
    పబ్లిక్ ఫంక్షన్ తొలగించు ($ id)
    {
        return $ this-> model-> dest ($ id);
    }

    // ఇచ్చిన ఐడితో రికార్డ్ చూపించు
    పబ్లిక్ ఫంక్షన్ షో ($ id)
    {
        తిరిగి $ this-> model-findOrFail ($ id);
    }

    // అనుబంధ నమూనాను పొందండి
    పబ్లిక్ ఫంక్షన్ getModel ()
    {
        తిరిగి $ this-> మోడల్;
    }

    // అనుబంధ నమూనాను సెట్ చేయండి
    పబ్లిక్ ఫంక్షన్ సెట్ మోడల్ ($ మోడల్)
    {
        $ this-> మోడల్ = $ మోడల్;
        తిరిగి $ ఇది;
    }

    // ఆసక్తిగల డేటాబేస్ సంబంధాలు
    ($ సంబంధాలు) తో పబ్లిక్ ఫంక్షన్
    {
        ($ సంబంధాలు) తో $ this-> model-> తిరిగి;
    }
}

ఈ ఫైల్ మా రిపోజిటరీ తరగతిని నిర్వచిస్తుంది. ఈ తరగతి యొక్క ఉదాహరణలు మేము ఒక అనర్గళ నమూనాతో ముడిపడి ఉన్న మోడల్ ఆస్తిని కలిగి ఉన్నాయి. ఇది కన్స్ట్రక్టర్‌లో కట్టుబడి ఉంటే, మేము క్లాస్ ఓర్ఫైల్, అప్‌డేట్ లేదా క్లాస్ పద్దతుల నుండి అనర్గళమైన పద్ధతులను పిలుస్తాము.

రిపోజిటరీ ఇంటర్‌ఫేస్ విభాగం అమలు చేయడం ఖచ్చితంగా అవసరం లేదు, అయితే ఇది మా కోడ్‌కు అదనపు నిర్మాణ పొరను జోడిస్తుంది. ఇంటర్ఫేస్ అనేది ఒక తరగతి నిర్వచించిన పద్ధతులను నిర్వచించే ఒప్పందం. మా విషయంలో ఇంటర్ఫేస్ ఇలా కనిపిస్తుంది:

ఈ ఇంటర్‌ఫేస్‌ను అమలు చేసే కొత్త రిపోజిటరీలను మేము చేస్తే, ఈ పద్ధతులు నిర్వచించబడతాయని మాకు ఎల్లప్పుడూ తెలుసు. ఇంటర్‌ఫేస్‌లు నిర్మాణాన్ని అందిస్తాయి కాబట్టి మా కోడ్ ఏమి చేయాలో మాకు తెలుసు.

తిరిగి మా TaskController.php ఫైల్‌లో మేము ఒక రిపోజిటరీని తక్షణం చేసి టాస్క్ మోడల్‌లో పాస్ చేస్తాము.

 మోడల్ = కొత్త రిపోజిటరీ ($ టాస్క్);
   }

   పబ్లిక్ ఫంక్షన్ ఇండెక్స్ ()
   {
       return $ this-> model-> all ();
   }

   పబ్లిక్ ఫంక్షన్ స్టోర్ (అభ్యర్థన $ అభ్యర్థన)
   {
       $ this-> ధృవీకరించండి ($ అభ్యర్థన, [
           'body' => 'అవసరం | గరిష్టంగా: 500'
       ]);

       // రికార్డ్ సృష్టించండి మరియు పూరించదగిన ఫీల్డ్‌లలో మాత్రమే పాస్ చేయండి
       return $ this-> model-> create ($ request-> only ($ this-> model-> getModel () -> fillable));
   }

   పబ్లిక్ ఫంక్షన్ షో ($ id)
   {
       return $ this-> model-> show ($ id);
   }

   పబ్లిక్ ఫంక్షన్ నవీకరణ (అభ్యర్థన $ అభ్యర్థన, $ id)
   {
       // అప్‌డేట్ మోడల్ మరియు పూరించదగిన ఫీల్డ్‌లలో మాత్రమే పాస్ చేయండి
       $ this-> model-> update ($ request-> only ($ this-> model-> getModel () -> fillable), $ id);

       return $ this-> model-> find ($ id);
   }

   పబ్లిక్ ఫంక్షన్ నాశనం ($ id)
   {
       return $ this-> model-> delete ($ id);
   }
}

లారావెల్ సేవా కంటైనర్ స్వయంచాలకంగా మా డిపెండెన్సీలను పరిష్కరిస్తుంది మరియు వాటిని కంట్రోలర్ ఇన్‌స్టాన్స్ (డాక్స్) లోకి పంపిస్తుంది.

ఈ సమయంలో మా అప్లికేషన్ సరిగ్గా అదే విధంగా పనిచేస్తుంది కాని రిపోజిటరీలను ఉపయోగించడానికి మా కోడ్ రీఫ్యాక్టర్ చేయబడింది మరియు మేము మరికొన్ని API ఎండ్ పాయింట్లను జోడించాము.

గితుబ్‌లో సోర్స్ కోడ్ అందుబాటులో ఉంది

Market మీరు జాబ్ మార్కెట్లో అభ్యర్థి అయితే లేదా బే ఏరియాలో నియమించుకోవాలని చూస్తున్న స్టార్టప్ అయితే, ఎంప్లాయ్‌బిఎల్‌లో ప్రొఫైల్‌ను సృష్టించడానికి సంకోచించకండి