Probleem
Olen püüdnud andmebaasist hankida Eloquenti mudelit, kuid lähen sellega edasi BadMethodCallExceptionMethod [leidma]
ei eksisteeri.
Siit proovisin siiani:
nimeruumi rakendus;kasutage Illuminate \ Database \ Eloquent \ Model;
kasuta rakendust \ Organization;
klassi kasutaja laiendab mudelit
/ **
* Mudeli kasutatav andmebaasitabel.
*
* @var string
* /
kaitstud $ table = 'kasutajad';
/ **
* Mudeli JSON-vormist välja jäetud atribuudid.
*
* @var massiiv
* /
kaitstud $ hidden = array ('parool');
avaliku teenuse organisatsioonid ()
tagastage $ this-> belongToMany (organisatsioon :: klass);
See on põhiline kasutajaklass, mis kaasneb iga uue Laraveli projektiga. Pärast uue kasutaja loomist näen selgelt, et ID3-ga kasutaja on andmebaasis olemas. Kuid kui ma järgin järgmist, siis lõpetan BadMethodCallExceptioni meetodit [leidma] pole olemas
avalik funktsioon getUser ($ id)
$ my_user = Kasutaja :: leia ($ id);
tagasivaade ('kasutajad.register ', massiiv (' kasutaja '=> $ minu_kasutaja));
Fail Minu marsruudid marsruudid \ veeb.php:
Route :: get ('kasutaja / id', '[meiliga kaitstud]');Marsruut :: get ('/', function ()
return Vaade :: make ('test');
);
Lahendus
Selle juurutamisega kaasnevad mõned probleemid, mis võivad põhjustada teie vastuvõtmise BadMethodCallExceptioni meetodit [leidma] pole olemas
erand.
- Peaksite järgima parimaid tavasid, kui nimetate oma kontrollerid sõnaks Model + “Controller”, et jõuaksite UserControlleri asemel lihtsalt User .
- Siin viidatud kasutajaklass pole tegelikult seotud teie rakenduse \ kasutajamudeliga. Kui märkate seda, ei lisanud te kunagi oma mudelit selgesõnaliselt. Seega eeldades, et eelmine punkt on juba fikseeritud, peate oma kasutajakontrollerisse lisama klassi Kasutaja . Alles siis saate selle klassi abil uusi objekte teha. Nii et minge oma UserControlleris sisse ja lisage rakendus App \ User; tipus. (Pange tähele, kuidas lisasin rakenduse \ organisatsioon)
- Kui olete selle parandanud, peaksite helilooja taastamiseks käivitama helilooja dump -o.lukufail, mis aitab teie klasside laadimist kiirendada.
Pärast seda peaksite saama oma rakenduse \ kasutaja mudeli juurde pääseda nii, nagu soovite.
Lisaselgitus (ainult hariduslikel eesmärkidel)
Nagu teate, pole veebiarendus kunagi tähendanud ühe mehe näitamist. Umbes 90% ajast võite eeldada koostööd teiste arendajatega. Projekti õnnestumiseks peate veenduma, et kõik järgivad üldisi kodeerimisreegleid.
Reeglid puudutavad nimetamise tavasid ja ma saan aru, et kindla nimetamiskonventsiooniga kursis hoidmine nõuab palju pingutusi ja võib raisata palju meeskonna aega, kuni kõik neist aru saavad ja neid järgivad. See on eriti raske uute arendajatega, kes meeskonnaga liituvad.
Ma soovitaksin teil proovida enne enda kirjutamise alustamist lugeda rohkem teiste inimeste koode, et lihtsalt mõista tööstuse parimaid tavasid.
Mõned reeglid on kohustuslikud ja mõned jäetakse meeskonna otsustada, kuidas nad soovivad läheneda.
Ülaltpoolt vaadates märkate, et kõik klassid tuleks kirjutada StudlyCapsis, nii et UserController ja mitte user_controller .
Ja see on näide kohustuslikust reeglist, mida tuleb järgida.
Näide sellest, mida meeskonnana võiksite sisereeglina määratleda, on see, kuidas nimetate oma klasse, meetodeid ja muutujaid.
Kui eeldatakse, et projekt aja jooksul kasvab, võite kindlasti oodata paljusid erinevaid üksusi, mis hõlmavad ühel või teisel viisil kasutajat, seega on oluline, et te ei peaks oma klasside, meetodite ja muutujate jaoks välja pakkuma ebamääraseid nimesid.
Minu isiklik näpunäide on; ärge kartke omada pikemat klassi või meetodi nime. Kui teil on vaja kommentaari, mis selgitab teie meetodit, võib teie meetodi nimi olla parem.
Selle näiteks on see, et kui peate kasutajaid andmebaasist hankima mõne lisatingimusega, võib-olla on tegemist üle 50-aastaste kasutajatega, siis ärge nimetage oma meetodit getUsers . Parem viis selle nimetamiseks on getAllUsersOver50YearsOld .