[MUSIC kucheza] ERIC Ouyang: Hey, kila mtu. Karibu. Hii ni Ujenzi Dynamic Mtandao Apps na Laravel. Jina langu ni Eric Ouyang. Mimi ni sophomore kusoma masomo ya kijamii na sekondari katika sayansi ya kompyuta, na mimi kuishi katika Adams House hapa katika Harvard. Hivyo Laravel, saa yake ya msingi zaidi, ni MVC mtandao programu mfumo. Hivyo kama nini guys kuwa wamekuwa wakifanya kwa CS50 Fedha, Laravel ni mfumo ambayo inaruhusu kujenga programu mtandao nguvu. Hivyo unaweza kufikiria ni katika baadhi ya akili kama ni upanuzi wa aina ya mambo tumekuwa kufanya katika CS50 Fedha, lakini mfumo huo ambao mengi imara zaidi, mengi kifahari zaidi katika baadhi ya akili, na hutoa mengi ya utendaji kwa ajili yenu kujenga haki tata maombi ya mtandao. Basi hebu kwenda kupitia baadhi ya vipengele muhimu, na kisha tutaweza kupiga mbizi katika mfano wa kujenga blog maombi na Laravel. Hivyo moja ya mambo ya kwanza kwamba differentiates ni kutoka MVC aina ya kazi kwamba tumekuwa kufanya na CS50 ni pamoja na injini ORM. Hivyo ORM anasimama kwa kitu kimahusiano ramani. Hivyo hii utapata kujenga safu ya abstraction kati ya database na controllers yako. Hivyo tofauti katika CS50 Fedha ambapo wewe moja kwa moja kufanya maswali, ORM safu utapata abstract kwamba mbali na kujenga mifano ya kwamba ni nguvu zaidi kuliko unaweza moja kwa moja na maswali SQL. Kitu kingine kwamba kweli manufaa ni templates kurithiwa. Hivyo itabidi taarifa katika CS50 Fedha, kuishia kuandika mambo mengi, ambapo maeneo unaweza uwezekano kutumia tena mambo, wewe si uwezo wa. Hivyo hapa katika Laravel, unaweza kutumia nini inayojulikana kama blade template injini kujenga bwana layout. Na kutoka huko, unaweza kurithi ili ndogo templates unaweza kweli pamoja na mambo ya ndani ya kuwa kubwa template msingi. Uhamiaji. Hivyo hii ni makala haki kiwango katika kisasa mifumo mtandao maombi zaidi. Hivyo hii utapata kuwakilisha mabadiliko schema database katika kanuni. Hivyo bila kwenda kusema, phpMyAdmin, unaweza kweli kujenga uhamiaji haya ambapo kuwakilisha database schema mabadiliko katika kanuni moja kwa moja. Na hii utapata to-- hasa kama una watu mbalimbali kazi juu ya mtandao huo application-- kufuatilia mabadiliko hayo, kusema katika GitHub, au baadhi ya seli nyingine. Hivyo hii ni kweli kusaidia na mitigates haja na, kusema, kupita kote mengi ya SQL madampo. Na hatimaye, mtunzi ni kitu kweli, muhimu kweli kweli kwamba utapata kutumia njia nyingine code watu kufanya mambo ya kutisha. Hivyo Laravel ya muundo kama mtunzi paket kadhaa. Hivyo kusema kama wewe alitaka kuleta katika mfuko uthibitisho au kama wewe alitaka kuleta katika baadhi ya aina ya jenereta script au admin interface, unaweza kuziba na kucheza wale vipengele na mtunzi. Basi hebu kuanza. Maswali yoyote kutoka kwenu guys kabla ya sisi kupata ilianza? Hakuna maswali? Baridi. Hivyo hatua ya kwanza ni kufunga mtunzi. Hivyo mtunzi utapata kusimamia beroendet haya, kama ni mfumo Laravel au nyingine chama cha tatu ugani. amri ya kwanza inaruhusu download Mtunzi, na amri ya pili utapata hoja hiyo katika bin yako folder mitaa ili uweze kukimbia mtunzi moja kwa moja kupitia terminal. Baada ya kuwa, kwenda mbele na kuunda mpya Laravel mradi. Sisi ni kweli kwenda kutumia baadhi mfano code kwamba nimepata kuweka pamoja kujenga blog hii. Lakini kama wewe ni kuanzia scratch, ungependa kutumia amri hii up hapa, mtunzi kujenga mradi mkubwa, laravel kufyeka laravel, na kisha jina ya mradi wako. Na kwamba ni pamoja na usambazaji wa code kwa ajili ya kuanza mpya Laravel mradi. Hivyo kwa CS50 miradi ya mwisho yako, itabidi pengine wanataka kutumia amri hiyo. Lakini sisi ni kwenda kuanza na hii. Hivyo mara moja umefanya kosa kwamba, wewe ni kwenda kupata idadi haki kina ya files katika blog50. Basi hebu tu kwenda kwa njia ya baadhi ya vipengele hivi. Utagundua katika njia hii directory, kuna programu folder. Ndani ya programu folder, kuna wanandoa na manufaa folders. Wanajulikana kuanza na ni folda hii config. Hivyo hii seti juu ya jinsi mtandao maombi yako ni kwenda, kusema, kuthibitisha watu au mambo ya fedha au kuungana na database. Na nini kweli manufaa ni kwamba Laravel inaruhusu wewe kuweka up mbalimbali mazingira ya maendeleo. Hivyo kile ambacho tumefanya hapa ni kama sisi kwenda chini folder mitaa, kuna database.php file. Na wewe utakuwa taarifa hapa kwamba sisi kuanzisha MySQL uhusiano kwamba inaruhusu watu binafsi kuungana kwa MySQL server kwamba moja kwa moja kwenye CS50 appliance. Na sisi ni kuunganisha na database kwamba mimi kuanzisha aitwaye Blog50. Basi hebu kweli kwenda mbele na kukimbia version kazi hii, tu kupata hisia ya kile maombi kwamba sisi ni kujenga inaonekana kama. Hivyo nina nakala ya hii Blog50 kukamilika. Hivyo Laravel kweli ina kujengwa katika server kwamba unaweza kukimbia moja kwa moja kutoka mstari amri. Hivyo hii ni sawa na Pset kabla wakati wewe kweli kujenga server yako mwenyewe katika C. Hivyo wao moja kujengwa katika hivyo kwamba unaweza kuendesha programu yako Laravel moja kwa moja kutoka mstari amri. Hivyo kama sisi kufanya php fundi kutumika, hii itazindua server maendeleo juu ya bandari 8,000. Hivyo kama sisi kwenda jeshi mitaa 8,000, utasikia taarifa kwamba, hey. Tuna blog yetu juu na kukimbia. Hivyo Laravel hapa ni kuzalisha ukurasa wa mbele wa blog yetu. Rahisi sana maombi. Lakini kuna wanandoa makala kweli nifty kwamba inatoa chini ya Hood. Hivyo blog maombi ya moja kwa moja. Kama sisi alitaka kujenga post, tunaweza bonyeza kifungo kwamba. Tunaweza kusema, "Hey, kila mtu. Hii ni kweli fun semina, "kwa mfano. Na kuandika kitu hapa chini. Nakala hapa. Kama sisi click Wasilisha, itabidi taarifa kwamba blog yetu mpya baada imeongezwa ukurasa wa mbele wa blog. Tukirudi hapa, utasikia taarifa kwamba kumekuwa na baadhi ya maoni tayari juu ya blog. Hivyo kama sisi kitabu chini, itabidi taarifa kwamba Jonathan Tan anasema kwamba alikuwa sana intrigued na makala hii. Hivyo tutaweza kwenda katika jinsi kitu ramani ya uhusiano inaruhusu kufanya mahusiano haya katika njia ya haki imefumwa pia. Baridi. Maswali yoyote kuhusu utendaji ya nini tunakwenda kujenga? Baridi. Basi hebu kuanza nje na kwa kweli kujenga meza database. Hivyo kukumbuka kuwa katika CS50 Fedha, wewe kuweka pamoja meza kwa watumiaji kama vile kwa ajili ya hifadhi katika kwingineko yako. Hivyo kama sisi zilizotajwa hapo awali, nini sisi kutumia katika Laravel ni kitu inayojulikana kama uhamiaji. Hivyo kama sisi kurudi nyuma kwa usambazaji code hapa, amri ya kwanza ambayo ni msaada ambayo Laravel hutoa ni amri hii kuhamia. Hivyo tunaweza kufanya php fundi kuhamia: kufanya. Hivyo hii inaruhusu sisi kujenga uhamiaji. Na kisha tutaweza wanataka kujenga uhamiaji kuitwa create_posts_table, ambayo ni kwenda kuwa ambapo tunakwenda kuwa kuhifadhi blog posts yetu. Na wewe utakuwa taarifa hapa kwamba anaendesha kupitia baadhi ya kanuni kwamba kweli inazalisha faili na muhuri wakati juu yake. Hivyo kama sisi kwenda na kuangalia Database, tutaweza taarifa chini ya Kuhama kwamba ni kuundwa tupu faili kwa ajili yetu ambayo ina boilerplate code kwa jina kwamba sisi maalum, kujenga posts meza. Na ina kazi mbili ndani yake. Up ni nini tunataka kukimbia wakati uhamiaji ni kutumika kwa database. Na chini ni nini tunakwenda kufanya wakati tunataka kupunguza uhamiaji. Hivyo hapa hebu kuanza nje na kuandika uhamiaji huu. Hivyo kuna darasa manufaa katika Laravel kuitwa Schema. Hivyo sisi ni kwenda kukimbia Schema :: kujenga. Na sisi ni kwenda kujenga meza kuitwa posts. Na hapa sisi kuomba hii kwa kutumia kazi. Na ndani ya hapa, tunakwenda kweli bayana yaliyomo ya meza yetu. Sisi ni kwenda kujenga ID, ambayo ni auto-incrementing. Aidha, tunakwenda kujenga uwanja kwamba inawakilisha jina la blog yetu post. Sisi ni pia kwenda kujenga uwanja kwa ajili ya kuhifadhi maandishi ya blog yetu ya mwisho. Na hatimaye, tunakwenda kuhifadhi baadhi ya timestamps kwa wakati baada yetu iliundwa na wakati ilikuwa updated. Na kwa ajili ya chini, ni haki rahisi. All tunataka kufanya ni tone meza kwamba tumekuwa kuundwa. Mkuu. Maswali yoyote? Hivyo sasa kama sisi kwenda mbele and-- kweli, mwenyeji wa ndani, napenda kufuta nini tulikuwa mapema. Kwenda Databases. Mimi nina kwenda kufuta nini tulikuwa mapema. Tone hii na kujenga orodha mpya Blog50. Hivyo sasa nini kichawi sehemu ni hapa kwamba sisi unaweza kuomba uhamiaji hizi moja kwa moja kwa database kwa kutumia amri line chombo. Hivyo kama sisi kufanya php fundi kuhamia, utasikia taarifa kwamba, hey. Ni iliyoundwa meza uhamiaji, ambayo tutaweza kuangalia katika kidogo, na ni kutumika uhamiaji hii kwanza. Hivyo sisi kuangalia Blog50, utasikia taarifa kwamba ni kuundwa mbao mbili kwa ajili yetu. Kwanza ni hii meza uhamiaji. Hivyo kama sisi kuvinjari hii, utasikia taarifa kwamba meza hii ni haki moja kwa moja. Ni tu kusema kwamba, hey. Tumeomba uhamiaji huu. Sisi kwenda nyuma na kuangalia posts. Utagundua kwamba muundo ni nini hasa tumeomba yake. Tuna auto-incrementing ID. Tuna kamba kwa ajili ya kuhifadhi cheo, na uwanja asilia kwa ajili ya kuhifadhi bidhaa. Mkuu. Baridi. Maswali yoyote kuhusu uhamiaji kazi, jinsi gani tunaweza kuyatumia? Hakuna? Baridi. Hivyo sasa tunakwenda kwenda mbele na kwa kweli kujenga mfano. Hivyo tunataka kujenga posts mfano kwamba maduka abstraction ya database. Hivyo badala ya kufanya maswali MySQL moja kwa moja, tunakwenda kujenga. Hivyo tuna kujenga folder katika hapa aitwaye mifano. Na ndani ya hapa, tunakwenda kujenga faili inayoitwa post.php. Ndani ya faili hili PHP, tunakwenda kujenga baada darasa ambayo hadi fasaha. Fasaha ni jina la ORM injini kwamba Laravel hutoa. Na katika hapa, sisi kutarajia kwamba wewe kweli haja ya kuandika baadhi ya kanuni. Sisi ni kwenda kuandika baadhi kazi msaidizi baadaye. Lakini nje ya boksi, hii tayari kutambua nini katika database na tunaweza kupata, kusema, Nakala ya blog post yetu au cheo, na kujenga mambo moja kwa moja na pretty much hakuna kanuni yoyote. Hivyo hiyo ni moja ya vipengele kichawi. Na upepo mara moja darasa hili ni fledged kikamilifu zaidi, tutaweza ni pamoja na taarifa juu ya nini ni kuhusiana na, hivyo comments. Pia kujenga kazi hivyo tunaweza kweli moja kwa moja kupata URL ya ukurasa blog post. Baridi. Maswali yoyote kuhusu hilo? No. Baridi. Hivyo sasa, mara moja tuna mfano wetu, sisi wanataka kujenga mtawala kwamba uwezo wa interface na mifano ya haya, na hatimaye database. Hivyo kama sisi kuangalia BlogController, itabidi taarifa kwamba kuna si sana hapa hivi sasa. All kuna ni index kazi kwamba inazalisha ukurasa wa nyumbani, lakini bila chochote kuna kuonyesha bado. Hivyo kazi ya kwanza kwamba sisi ni kwenda kujenga ni moja ambayo inaruhusu sisi kujenga blog post. Hivyo sisi ni kwenda kutangaza kazi mpya iitwayo newPost. Na ndani hapa tu, tunakwenda kuweka mpangilio wa ukurasa hii kuwa atatoa toleo, kama unakumbuka kutoka CS50, ya template hii inayoitwa blog.new, ambayo tunakwenda kujenga katika kidogo. Utagundua hapa kwenye mstari sita kwamba sisi maalum variable hii, layout. Na kama sisi kuchukua kuangalia katika Views folder, kuna folder Layouts, ambayo pamoja na ya msingi sana HTML file. Na kumbuka, wewe utakuwa taarifa kwamba tuna chombo hii hapa kuwa mavuno maudhui. Hivyo ndani ya template yetu nini tunakwenda kufanya ni kujenga nini kinaendelea kuwa badala ya moja kwa moja ndani ya mpangilio huu. Hivyo tulisema kwamba tunataka kutoa template aitwaye blog.new. Lakini ndani ya Blog, kuna bado template hii mpya. Hivyo sisi ni kwenda kujenga faili inayoitwa new.blade.php. Hii inatuambia Laravel kwamba faili hii PHP lazima kuwa zilizotolewa na blade template injini. Hivyo hii ni haki moja kwa moja file. Ni kwenda kuwa aina na ambayo sisi kweli kuongeza katika blog post. Hivyo uchawi hapa kutoka urithi ni kwamba, hey. Tunataka bayana kwamba sehemu, sehemu ya maudhui hapa, ambayo ni delineated nasection nastop. Basi nini katika kati ya hapa ni kwenda kuwa mbadala katika bwana layout. Na hapa ni nini tunataka kufanya ni sana tu kujenga mpya HTML file. Hebu tu kuongeza cheo haraka. Kuongeza blog post. Na ndani yake, tuko kwenda kujenga fomu. Fomu hii ni kwenda kuwa action. Na hii ni kwenda kuwa kitu kwamba sisi mbadala katika baadaye, na tutaweza kuona jinsi routing inafaa katika hapa. Lakini sisi ni kwenda tu kufafanua kwa sasa kwamba hii inakwenda URL na njia kutoka createPost. Na kisha hii ni kwenda kuwa na njia ya Posta. Ndani ya hapa, tunakwenda kuwa na mashamba mawili. Div darasa = "fomu-kundi". Sisi ni kutumia maktaba Bootstrap CSS neema zinazotolewa na Twitter. Hivyo sisi ni kwenda kujenga wawili hawa. Hivyo hii pembejeo ya kwanza ni kwenda kuwa cheo. Hivyo pembejeo name = "title". Darasa = "formcontrol". Aina = "Nakala". Mimi nina kwenda kuongeza placeholder = "Title". Na kisha moja ya pili ni kwenda kuwa eneo maandishi. Jina = "content". Darasa = "formcontrol". Na placeholder = "Andika hapa". Kuna sisi kwenda. Hatimaye, tunakwenda kuongeza haraka kuwasilisha kifungo. Aina = "kuwasilisha" class = "BTN btn-msingi". Hivyo haya yote ni sifa za Bootstrap hivyo kwamba hii inaweza kuweka nje katika njia hiyo ni mawindo user, badala ya HTML uchi. Hivyo tumekuwa defined mtawala hapa. Tumekuwa defined mtazamo rahisi sana. Lakini nini kukosa ni tishu connective. Hivyo katika hatua hii, Laravel hana wazo jinsi tunakwenda kweli kupata mtawala hii. Hivyo hii ni ilivyoelezwa katika faili inayoitwa routes.php. Na hivi sasa, tuna njia moja. Ambayo ni wakati sisi kwenda nyumbani njia kwa tovuti hii, ni kwenda kutoa index mtawala. Hivyo hapa nini tunahitaji kufanya ni kutekeleza njia mpya kwa ajili ya sisi kujenga post. Hivyo sisi kutumia njia hii kupata, ambayo inabainisha kwamba wakati mtumiaji anajaribu kupata hii page-- hasa baada kufyeka page-- mpya nini tunakwenda kufanya ni kutumia mtawala aitwaye BlogController mpya baada. moja kwamba sisi tu kuundwa. Na kisha tunakwenda kwa Alias ​​kama newPost. Sisi ni kwenda kujenga mwingine kazi katika kidogo. Lakini nini hapa chini muhimu "kama" ni nini tunaweza mbadala ndani ya Blade yetu templates. Hivyo kwa sasa, hebu kweli pia kusema njia. Hivyo sisi ni pia kwenda kujenga mtawala ili tuweze kujenga posts hizi. Hivyo kama posts mtumiaji ukurasa baada kufyeka mpya, nini tunakwenda kufanya ni anatumia mtawala tunakwenda kujenga muda mfupi kuitwa BlogController katika createPost. Na tunakwenda uwanja hii na kama createPost. Baridi. Maswali yoyote? Baridi. Basi hebu kukimbia nini sisi hivyo mbali. Hivyo kama sisi kufanya php fundi kutumikia, tutaona kura ya makosa. Hivyo inaonekana kama tuna syntax makosa juu ya njia ya mstari wa 27. Ah. Kukosa semicolon. Hivyo kama sisi kwenda 8,000, utaona kitu hapa bado. Hivyo hii ni ukurasa wa nyumbani default. Lakini kama sisi kwenda baada ya kufyeka mpya, hey. Ni utakuwa fomu kuwa sisi tu kuundwa. Hivi sasa, tuna si kutekelezwa utendaji ya wakati sisi waandishi wa habari Submit button. Hivyo kama sisi bonyeza Wasilisha kifungo, ni kwenda kukimbia makosa. Lakini tunakwenda kificho kwamba sasa hivi, just nini sisi wanataka kufanya wakati mtumiaji elekeza fomu hii. Basi hebu kufanya hivyo. Nenda nyuma faili Controllers. Nini tunakwenda kufanya ni kutekeleza kazi hii mpya kwamba inaruhusu sisi kujenga post. Kutangaza kazi mpya. Kazi Umma createPost. Na kazi hii ni kwenda kuwa kidogo kisasa zaidi kuliko yale sisi alikuwa mbele. Lakini utaona hapa kwamba sisi siyo kwenda kweli kuandika SQL yoyote. ORM, fasaha ORM, ni kwenda kuruhusu sisi kufanya hili katika baadhi ya njia njia zaidi ya kifahari. Hivyo sisi ni kwenda kujenga baada ya mwezi. Na hapa tuko instantiating kitu mpya na mfano kwamba sisi tu kuundwa, baada mfano. Na nini tunakwenda kufanya ni kuweka cheo sifa ya hii kwa kutumia kitu kwamba sisi kupata kutoka server. Hivyo hii ni sawa na kile tulikuwa kabla katika CS50 Fedha ambapo tunataka kufanya, kwa kutumia Super Global Post kuangalia kwa cheo. Hivyo Laravel inatoa baadhi ya usafi wa mazingira na whatnot kutumia hii kazi msaidizi. Hivyo sisi wanapendelea kutumia hii badala ya msingi sana aina hii ghafi kutoka PHP. Na kisha nini tunakwenda kufanya ni kuweka maudhui ya kwa Input kupata maudhui. Sisi ni kweli kwenda wrap hii katika kazi na manufaa kwamba PHP hutoa kuitwa nl2br, ambayo anarudi mpya mistari, NLS, katika BRS, mapumziko, ili tuweze kweli kuwa aya tofauti ndani yake. Na hatimaye nini tunakwenda kufanya ni kuokoa makala hii. Hivyo tunatoa wito kazi kuokoa juu ya mtindo huu. Sisi ni kwenda kuokoa post. Na hatimaye nini tunakwenda kufanya ni kuelekeza user hasa kwa njia ambayo tunakwenda kujenga muda mfupi, vinginevyo, na viewPost. Na tunakwenda kupita katika hoja id, kuwa id ya post hii mpya. Mkuu. Hivyo sasa kama sisi kweli kwenda na kukimbia hii. Sisi ni kwenda kuongeza post mpya. Hebu kusema hii ni semina 50. Na kusema, uhakika. Asdl. Chochote. Baadhi ya aina ya maudhui. Na Wasilisha yake. Na tutaweza taarifa kwamba, hey. njia si defined. Lakini kama sisi tuangalie phpMyAdmin na kuangalia kwa kama au si kazi yetu alifanya kitu chochote. Angalia Blog50 posts. Sisi utakuwa taarifa kwamba, hey. Kwa kweli, hatukuwa tu kujenga kwamba blog baada na timestamps kama maalum. Hivyo sasa hebu kwenda nyuma na kwa kweli kujenga kazi hii nyingine katika mtawala wetu, hasa viewPost mtawala. Hivyo umma kazi viewPost. Hivyo hapa ni nini tutaweza kufanya, badala ya kuwa mabano tupu, tutaweza wanataka kupitisha katika ID ya baada ya kuwa sisi ni kujenga. Na kutoka hapa nini tunakwenda kufanya ni kweli swala database kwa ajili yake. Hivyo kama hatuwezi kuchapisha, kuna kazi kuitwa Kupata kwamba inaruhusu sisi swala hilo kwa ID. Hasa, kwa kweli, tunakwenda kutumia toleo mbadala ya hii inaitwa Kupata au Fail, ambayo inaruhusu sisi kujiondoa nje ya kazi hii, kutupa ubaguzi kama ID sisi kupita katika haipo. Na kisha tunakwenda kufanya kitu sawa na kile sisi alivyofanya awali ambapo sisi kuweka maudhui ya ukurasa huu kuwa toleo kulipwa wa mtazamo huu mpya ambayo tunakwenda kujenga, blog.view. Na tunakwenda kupita katika ubaya wake tu kama katika CS50 atatoa function-- kamusi ya vigezo. funguo za safu hii associative kuwa vigezo ndani ya template. Hivyo sisi ni kwenda kufanya post post. Hivyo kupita moja kwa moja baada ya kuwa tumekuwa aliuliza kutoka database. . Sasa nini tunakwenda kufanya ni kujenga mtazamo huu ili tuweze kweli kuona posts blog kwamba tumekuwa kujengwa. Hivyo sisi ni kwenda kujenga faili inayoitwa view.blade.php. Hivyo ndani ya template hii, nini tunakwenda kufanya ni kuweka pamoja ukurasa rahisi kwamba inaruhusu sisi kuonyesha maudhui. Hivyo sisi kufanya sehemu, kwamba kabla ya maudhui. Kuacha. Na nini tunakwenda kufanya ndani ya hapa ni kuandika baadhi HTML kwa kuonyesha ukurasa huu. Hivyo sisi ni kwenda kwa wrap ni pamoja na dhana mpya HTML5 kipengele inayoitwa Ibara ya. Na katika hapa, tunakwenda kuwa na header ambapo tunakwenda tu na h1, ambayo ni pamoja na kichwa cha habari. Hivyo hapa, kama sisi kuangalia hii curly mbili brace nukuu, hii kufanya kimsingi PHP echo cheo post. Hivyo ni shorthand manufaa kwamba Laravel hutoa sisi. Hivyo sisi ni kwenda kutumia nukuu hii badala yake. Na hapa, tunakwenda pia magazeti nje maudhui ya yake. Na katika hapa, tunakwenda kufanya bidhaa ya mwisho. Na chini chini nini tuko kwenda kufanya ni kujenga footer. Na katika footer, tunakwenda kuonyesha kwanza wakati hii ilikuwa posted. Hivyo hii ilikuwa posted katika, kuundwa kwa. Na Laravel anatumia kweli nice tarehe maktaba kuitwa Carbon. Hivyo tunaweza kweli kufanya kitu kinachoitwa difforHumans, ambayo hapo awali. Wakati sisi posted. utakuwa kusema, kama, sekunde mitano iliyopita. Hivyo hii ni kwa kweli ni nzuri utendaji wa Laravel. Na hatimaye, tunakwenda kuifunga footer hii. Hivyo sasa kama sisi kurudi nyuma kwa Ukurasa wa tunakwenda kuona kitu hapa lakini, kwa sababu sisi si coded up ukurasa wa nyumbani. Lakini kama sisi kwenda baada ya kufyeka moja, tunakwenda kuona ubaguzi. Je, mtu yeyote kujua kwa nini tunaona ubaguzi? Je, ni sisi kukosa? Mawazo yoyote? Hivyo gani sisi kufanya mapema kwa ajili yetu kwa kweli kufafanua jinsi sisi kupata hasa controllers? SPIKA 1: njia? ERIC Ouyang: Yeah. Hivyo bado tuna kufafanua njia. Hivyo sisi kurudi nyuma hapa routes.php. Utagundua kuwa sisi si kweli defined jinsi sisi ni kwenda kupata na mtawala hii. Hivyo sasa tunakwenda kufafanua njia hii. Ni haki moja kwa moja, sawa na kile sisi alivyofanya awali. Lakini nini tunakwenda taarifa hapa ni kwamba sisi ni kwenda kuwa placeholder. Hivyo kama sisi kufanya route.get slash baada ID. Hivyo ID sasa ni nini kinaendelea kuwa kupita katika mtawala. Hii ni kwenda kutumia mtawala kwamba sisi tu kuundwa, BlogController katika viewPost. Na tunakwenda uwanja huu kama viewPost. Mkuu. Hivyo sasa tunakwenda kujenga njia hii. Hivyo sasa kama sisi kwenda hapa na kupata mahitaji ukurasa huu, sisi kwa kweli kufanya kuwa blog yetu mpya baada. Hivyo hii ni nini sisi aliumba mapema. Sana ukurasa rahisi, lakini maonyesho baada ya blog kwamba sisi tu kuundwa. Baridi. Na kama sisi kweli kwenda njia nzima mchakato wa kuunda mpya baada ya blog, tutaweza taarifa kwamba kila kitu maelekezo vizuri. Kama mimi kusema, "Hi. Mimi nina Jonathan Tan. " Kusema, "Hii ni blog yangu ya mwisho." Na Wasilisha hiyo, hii itakuwa kujenga hii blog post mpya na ID 2, ambayo nyongeza kutokana na kile tulikuwa awali na maonyesho vizuri. Kutisha. Maswali yoyote? Ndiyo? SPIKA 2: Je, Laravel kushughulikia sanitization na kila kitu kwa ajili yenu? ERIC Ouyang: Ndiyo. Hivyo wakati tuliona mapema wakati tulivyofanya pembejeo COLON COLON kupata, kwamba sanitates SQL yoyote sindano na whatnot kwamba sisi kutaka kufanya kama tuko malicious mtumiaji wa tovuti. Hivyo Laravel Hushughulikia mengi ya kwamba nyuma ya pazia. Swali nzuri. Basi hebu tuangalie ukurasa wa nyumbani. Hivyo kama sisi kwanza kurejea mtawala kwa ukurasa wa nyumbani, utasikia taarifa kwamba haina kufanya mengi hapa. Utagundua kwamba sisi siyo kupita katika mtawala hii chochote hasa kusaidia. Ni tu faili hili index. Basi hebu kupita katika hii ni kitu kusaidia. Na hasa, tuko kwenda kupita katika posts. Na Laravel inaruhusu sisi kufanya baada ya yote, ambayo itaruhusu sisi kupata nafasi zote. Sasa kama sisi kwenda nyuma ya index.php, utaona, hey. Hakuna kitu hapa bado. Lakini nini tunataka kufanya hapa ni kweli iterate kupitia, kufanya foreach kitanzi juu ya posts kwamba inaruhusu sisi magazeti nje posts. Posts Hivyo foreach kama post, nini tunataka kufanya ni magazeti nje maudhui ya blog post. Lakini jambo moja utasikia taarifa ni kwamba sisi kweli aliandika zaidi ya kwamba kanuni tayari, katika view.blade.php. Hivyo nini tunakwenda kwa kweli kufanya ni kutumia nzuri na manufaa hulka ya Blade na sababu nje ya kanuni hii ya kawaida. Hivyo sisi kwenda hapa. Sisi ni kwenda kuchukua bidhaa hii haki hapa, na nini tunakwenda kufanya ni kujenga folder mpya. Hebu tu kuiita Partials. Na katika hapa, tunakwenda kujenga post.blade.php. Hivyo hapa, sisi factored nje ya njia katika ambayo tunataka kuonyesha posts hizi. Na hapa ni nini tutaweza kufanya badala ya kweli kuwa na kwamba HTML moja kwa moja, tunakwenda kutumia direktivet kuitwa ni pamoja na blog.partials.post. Na nini tunakwenda kufanya hapa ni kupita katika wadhifa wa ukurasa. Hivyo sasa kama sisi kurudi nyuma hapa, tutaweza taarifa kwamba utendaji ni bado hiyo. Lakini sasa tuna hii factored nje code, HTML hii. Hivyo tunaweza kuitumia katika Index. Hivyo hapa, hii ni rahisi sana. Wote sisi kufanya ni pamoja na blog.partials.post na safu. Na mahali fulani kwa kabla, sisi kufanya baada ya mwisho. Hivyo sasa kama sisi kurudi nyuma kwa ukurasa wa nyumbani, tutaweza kuona kwamba, hey. Tuna orodha ya yote posts blog kwamba sisi alikuwa mbele. Sisi kutaka kuongeza baadhi ya "kama" masharti na masharti "mwingine" ili kwamba kama hatuna chochote juu ya blog, tunataka kuonyesha kitu kusaidia. Kama, hey. Kuna hakuna maudhui bado juu ya blog. Na kama wewe guys kweli kuangalia usambazaji kanuni ya GitHub, utaona mfano wa jinsi sisi kufanya hivyo. Baridi. Maswali yoyote? Ndiyo. SPIKA 2: mimi nadhani tu msingi swali. Nyuma katika njia. ERIC Ouyang: Yeah. Kama sisi tuangalie njia. SPIKA 2: Je, wapi uses.blogcontroller katika kujenga post, je, hiyo moja kwa moja kwetu? ERIC Ouyang: Yeah. Yeah. SPIKA 2: Au nini ni that-- ERIC Ouyang: Hivyo, kuangalia, wanasema kwa mfano, hii njia ya haki hapa. Sehemu ya kwanza ni halisi URL kwamba mtumiaji kwenda. Na hii safu hapa, associative safu, amefafanua jinsi tunataka kuwa maombi tendo katika kukabiliana na hilo. Hivyo anatumia ni mtawala, kazi ambayo sisi wanataka kuwaita wakati user inakwenda URL hii. Hivyo viewPost haki hapa ilikuwa kazi ambayo sisi defined ndani ya BlogController-- SPIKA 2: naona. ERIC Ouyang: --so kwamba sisi unaweza kweli atatoa maoni, kufanya baadhi ya mahesabu, kuingiliana na SQL database. SPIKA 2: OK. ERIC Ouyang: Na kisha nyingine sehemu, "kama" ni uwanja kwamba sisi kutumia. Hivyo kama sisi taarifa wakati sisi aliumba fomu, utasikia taarifa kwamba URL :: routecreatePost. Hivyo ni substitutes katika halisi URL hivyo kwamba sisi siyo ngumu coding hizi katika ili tuweze mabadiliko hayo mara moja, wanasema kama sisi alitaka kubadili jina. Badala ya baada slash mpya, tunataka kufanya kama, p kufyeka mpya tu safi up URLs yetu kidogo. Tunataka mabadiliko hayo katika doa moja badala kuliko katika mafaili yote tofauti. Baridi. Hiyo ni nzuri. Hivyo basi, tuna sana msingi blog jukwaa. Sisi pengine unataka kuongeza katika kifungo hivyo kwamba tunaweza kweli kujenga posts mpya. Hivyo kama sisi kuangalia katika Layout Mwalimu, tuna sehemu inayoitwa Header Right kwamba tumekuwa tu defined hadi saa juu. Hivyo tunaweza kuongeza vifungo juu ya header. Hivyo kama sisi kwenda index.blade.php, kwa kweli kufanya ni kufafanua yale yanayoendelea ndani ya hapa. Hivyo hii sehemu Header Right, nini tunakwenda kufanya ni kuongeza katika kifungo kwenda URL inavyoelezwa na njia mpya post. Tu safi it up na kufanya ni pretty na wote Bootstrap, tunakwenda kufanya kifungo hii default. Hebu tu kufanya hivyo kubwa kwa ajili ya kujifurahisha. Na ndani yake, tunaweza kuweka baadhi ya maandishi. Lakini nini Bootstrap hutoa ni glyphicons. Hivyo tunaweza kweli kuongeza kwa kuwa nzuri penseli kuwa tuliona mapema. Glyphicon. Glyphicon-kalamu. Hivyo hii itaruhusu sisi kuweka katika icon badala ya maandishi. Sasa kama hatuwezi kuacha, hii itakuwa kufafanua sehemu hii. Na, hey. Tuna nzuri kifungo kwamba viungo us moja kwa moja kwa kuongeza ukurasa blog post. Hivyo tuna blog haki rahisi. Tunaweza kuongeza mambo yake. Lakini nini sisi ujumla kutarajia kutoka blogs ni maoni. Hivyo ni kweli ni muhimu kwa ajili yetu kuwa, kusema, kama mtu mwingine kutembelea tovuti na kwa kweli anapenda baada ya kuwa wanaweza kushiriki kikamilifu katika majadiliano na watu wengine ambao kutembelea ukurasa. Hivyo sisi ni kwenda na kujenga mpya database meza na mtindo mpya ili tuweze kujiunga maoni na posts. Hivyo hatua ya kwanza, kama kabla, ni kwamba tunahitaji kukimbia uhamiaji. Hivyo kama kabla, sisi kufanya php fundi kuhamia: kufanya. Na sisi ni kwenda kujenga moja kuitwa create_comments_table. Hii itakuwa kujenga faili ambayo ina uhamiaji wetu mpya. Na tunakwenda, kama kabla, kufafanua meza mpya. Hivyo Schema :: kujenga meza kuitwa comments. Kazi hii hapa. Na ndani ya meza hii ni nini tunakwenda kufanya ni kwanza, kama kabla, hawawajui ID. Nyongeza ID. Sisi ni kwenda kuruhusu watumiaji kujiunga jina yao na maoni fulani. Sisi ni kwenda kuwa na baadhi ya maudhui ambayo huenda pamoja na hii, maudhui maandishi. Na hapa ni nini tunakwenda kufanya ni kitu tofauti. Sisi ni kwenda kujenga integer kwamba wito post_id ambayo ni kwenda yanamaanisha nini baada maoni fulani inakwenda kwa. Aidha, sisi ni kweli kwenda kuweka kigeni muhimu kikwazo juu ya hili. Hivyo MySQL italazimisha hiyo. Sisi siyo kujaribu hawawajui maoni simu 5 baada ya 5,000 kama tuna si alikuwa posts 5,000 juu yake. Hivyo kile sisi kufanya hapa, sisi kufanya post_id kigeni ni kwenda kuwa kuhusishwa na ID uwanja kutoka posts meza. Na tutaweza kweli kufanya kitu mwingine msaada, ni onDelete. Hivyo kama sisi kufuta baadhi baada ya kutoka database, kwamba tunataka kuteleza deletes kwa maoni pia. Sababu si inasaidia sana kwa ajili yetu kuwa maoni kwenye machapisho kwamba hazipo. Na hatimaye, kama kabla, tuko kwenda kuweka mihuri wakati juu ya hili. Na kama kabla, tunakwenda kuwa uhamiaji reverse kuwa kuacha comments meza. Hivyo sasa kama sisi kurudi nyuma hapa, tunakwenda kukimbia uhamiaji, fundi kuhamia. Na sasa ni kutumika hii uhamiaji kwamba sisi tu kuundwa. Hivyo kama sisi kuangalia phpMyAdmin, sisi kufanya, kwa kweli, sasa una maoni meza ambayo ina muundo kwamba sisi tu maalum. Hivyo kama kabla, tuko kwenda kujenga mtindo mpya abstract meza SQL kwamba sisi tu kuundwa. Basi hebu Kuongeza faili mpya. Tunakwenda kuiita comment.php. Na hii ni kweli kwenda kuwa na haki moja kwa moja na mabadiliko kidogo kutokana na kile sisi alikuwa mbele. Hivyo darasa Maoni hadi fasaha. Na nini tunakwenda kufanya hapa ni kufafanua kazi hiyo ni uhusiano na mifano ya wengine. Hivyo sisi ni kwenda kuwa na baada ya kazi hapa kwamba anarudi uhusiano huu. Hivyo sisi ni kubainisha kwamba hii ni mali ya post, kusema kwamba kuna post moja kwamba maoni hii ni mali ya. Hii kwa kweli ina kuwa mji mkuu P kwa mfano. Na sasa tu juu ya flip nyingine upande, tuna kusema kwamba, hey. Posts na comments. Hivyo nini tunakwenda kufanya ni kufafanua maoni ya umma kazi. Na hapa ni kurudi hii ina watu wengi maoni. Hivyo sasa magically wakati tuna post, tunaweza kupata sifa comments na kutakuwa na idadi ya ni pamoja na habari kutoka database. Basi hebu kweli kwenda kwa njia na kuongeza kipengele mpya ya maoni faili wetu ili kuonyesha sisi unaweza wote na kujenga comments. Hivyo sisi ni kwenda kufafanua sehemu mpya. Hebu tu kujitenga na utawala usawa. Sehemu id = "comments". Nini tunakwenda kufanya hapa ni, kama kabla, iterate kupitia maoni yote. Hivyo kweli jinsi sisi kufanya hivyo ni, kama nilivyoeleza, haki ya kichawi. Sisi kufanya kuchapisha maoni. Na kisha tunaweza kufanya hivyo kwa kila kitanzi juu ya kila ya maoni. Na nini tunakwenda kufanya ni div darasa maoni, na tunakwenda kweli magazeti nje maoni. Hivyo kuonyesha kwamba hey, maoni name-- mtu ambaye posted comment-- hii anasema dot dot dot. Sisi ni kwenda kuweka hii katika kuzuia quote, tu kufanya ni kuangalia nzuri. Na kisha maoni maudhui kuzuia quote. Na foreach. Hivyo sasa hii ni kwenda kitanzi kupitia maoni yote kwamba ni kuhusishwa na kila moja ya posts na kuonyesha kila moja ya maoni hayo. Mimi nina kwenda kuongeza sehemu nyingine chini hapa, ambayo inaruhusu sisi kuongeza maoni. Hivyo h3 darasani. Weka kichwa hapa. Kuongeza maoni. Na tunakwenda kufafanua aina mpya. Hivyo kama kabla, tuko kwenda kufanya aina action. Na hapa, hatua mpya ni tuko kwenda kufafanua mtawala mpya kwamba inaruhusu yetu ya kujibu baada ya maombi kwa ajili ya kujenga comments. Hivyo URL :: njia createComment. Mimi nina kwenda kupita katika parameter hapa. ID ya baada ya kuwa sisi ni kujenga maoni juu. Na kisha njia ya hii aina ni kwenda kuwa baada. Sasa sisi ni kwenda kuongeza katika mashamba mawili, fomu kikundi. Hii ni kwenda kuwa pembejeo na jina "jina" na class = "aina ya kudhibiti", aina = "Nakala", na kwa placeholder = "jina lako." Sisi ni pia kwenda kufafanua uwanja mwingine fomu, ambayo ni kwenda kuwa Nakala eneo kama sisi alikuwa mbele. Tu kama kabla, simu yake maudhui. Darasa = "aina ya kudhibiti." Kishika = "Andika hapa." Na hivyo tu kwamba sisi unaweza kweli kuwasilisha, kuwasilisha aina na class = "BTN btn-msingi." Karibu fomu. Karibu hatua hii. Hivyo sasa kama sisi mahitaji ukurasa huu ambapo tuna, kusema, baada fulani. Tuna reboot server. PHP fundi kutumika. Reboot hii. Tuna kufafanua njia. Lakini kwa sasa, hebu tu kuchukua hii nje ili tuweze kweli kuonyesha nini ukurasa inaonekana kama, na kisha tutaweza kweli kujenga njia hiyo. Hivyo, hey. Tuna aina hii mpya hapa chini ili tuweze kujenga comments. Basi hebu kweli kufafanua kufanya kazi ndani ya mtawala ili tuweze kuongeza maoni. Hebu kwenda nyuma. Na ndani ya blogcontroller.php, nini tunakwenda kufanya ni kujenga kazi mpya kuitwa kujenga maoni. Kazi Umma createComment. Hii ni kwenda kuwa moja parameter, ID ya posts kwamba sisi ni kutoa maoni juu ya. Na kama kabla, tuko kwenda kwanza kupata goli. Hivyo post, findOrfail id. Baada ya hapo, tunakwenda kujenga maoni mapya. Hivyo maoni = mpya Maoni. Maoni name = Input :: kupata jina. Maoni content = huo mpya line ndani ya mapumziko ya Input :: kupata maudhui. Na hatimaye, tunakwenda kuwa na kujiunga maoni hii na baada. Hivyo sisi ni kwenda kutumia kazi hii, maoni, ambayo inaruhusu yetu ili kuokoa uhusiano huu. Hivyo sasa maoni hii itakuwa na moja kwa moja baada ID. Tunaweza pia kuweka manually, lakini hii ni zaidi rahisi kusoma mbali kama kazi unaendelea. Na baada ya sisi kufanya hili, ni nini tunataka kufanya ni kuelekeza user njia maalum na viewPost na safu na parameter ya post ID. Na sasa ili hii kwa kweli kazi, tunahitaji kufafanua njia hii. Route :: post. Na sasa sisi ni kwenda kuwaita hii baada kufyeka ID slash maoni. Array anatumia kazi mpya kwamba sisi tu kuundwa. BlogController. CreateComment kama createComment. Mkuu. Hivyo sasa hopefully kama sisi mahitaji ukurasa huu na kuongeza katika maoni, kusema, David Malan. "Hopefully hii kazi." Wasilisha. Hatuna, kwa kweli, na maoni juu ya post hii blog. Baridi. Hivyo basi, tuna haki kazi blog post. Sisi ni kwenda tu kwa kuongeza tweaks wanandoa hivyo kwamba tuna baadhi muhimu zaidi habari juu ya posts hizi. Hivyo kama sisi kurudi nyuma kwa ukurasa wa mbele, hatuna maana ya jinsi comments nyingi ni juu ya kila mmoja posts hizi. Hivyo kile sisi ni kweli kwenda kufanya ni, ndani ya mtindo wetu, kufafanua msaidizi kazi ambayo inaruhusu sisi kutaja idadi ya maoni kwamba kwenda na baada fulani. Hivyo sisi ni kwenda kujenga msaidizi kazi. Kazi ya umma. GetNumCommentsStr. Hivyo string kwamba unasema simu ya maoni kwamba kwenda pamoja na yake. Na nini tunakwenda kufanya ni kusema kwamba num = comments hii kuhesabu. Hivyo sisi ni kwenda kuhesabu idadi ya maoni. Na kama idadi hii ni sawa na 1, tuko tu kwenda na kurudi 1 maoni. Na kisha vinginevyo, tunataka kurudi concatenation ya num na maoni, ili tuweze kupata pluralization sahihi. Tu kufanya hii quote moja. Maoni moja. Na sasa tunaweza kutumia kazi hii moja kwa moja ndani ya mtazamo wetu. Hivyo kama sisi kurudi nyuma kwa sehemu posts kwamba sisi aliumba, sasa tunataka kweli kuonyesha idadi ya maoni. Hivyo nini tunaweza kufanya ni post, kutumia kazi hii kwamba sisi tu kuundwa kwa kuonyesha idadi ya maoni. Hivyo kama sisi sasa mahitaji, ni gani, kwa kweli, kuonyesha comments simu kwamba kwenda pamoja na yake. Kama sisi alitaka kuwa dhana kama wewe kweli kuangalia usambazaji code, sisi kweli unaweza kuhusisha hii kwa maoni. Kama unakumbuka, sisi defined ndani ya kuona kwamba hii ina sehemu ID comments. Hivyo kama sisi kweli alitaka kiungo moja kwa moja na sehemu ya maoni, nini tunataka kufanya hapa ni href URL ya njia viewPost. Kupita katika safu ID ya post ID. Na kisha tunataka kwenda kwa hasa sehemu ya maoni. Hapa hebu karibu tag. Hivyo sasa kama sisi mahitaji hii ukurasa, sisi bonyeza juu ya hili. Tutaweza kwenda moja kwa moja sehemu ya maoni. Kama tungekuwa na baada muda mrefu, unaweza kweli kuona bounce hii chini. Lakini utasikia taarifa kwamba ni si juu ya ukurasa. Baridi. Mkuu. Hivyo hiyo ni haki moja kwa moja mfano wa kitu rahisi kwamba unaweza kufanya na Laravel. Lakini unaweza taarifa hapa kwamba tumefanya mambo mengi na kiasi haki ndogo ya kificho. Laravel inaruhusu sisi kufanya Maswali SQL nyuma ya pazia. Ni gani usafi wa mazingira kwa ajili yetu nyuma ya pazia. Inaruhusu tufanye mahusiano haya kwa urahisi sana bila ya sisi wanaohitaji kufanya SQL yoyote kujiunga taarifa kwa kuchanganya maoni na nini posts. Inaruhusu sisi kufanya hili urithi wa templates ili tuweze kufafanua haya nesting files hivyo sisi siyo kurudia wenyewe, tu kama wakati tulikuwa kwamba maonyesho ya posts blog kwamba hatuna kwa nakala na kuweka code. Na kutoka hapa unaweza kujenga inazidi ngumu maombi. Unaweza kufikiria kama sisi alitaka kutekeleza umeingia katika, tunaweza kusema, kuleta katika chama cha tatu mfumo ambayo inaruhusu sisi kufanya hivyo. Kuna rundo yao kwamba ni kweli, kweli kubwa ambayo inaweza kufanya kama, password ahueni. Na nitawapelekeni upya password email. Tunaweza kutekeleza ruhusa ili niweze kujenga post, lakini mtu mwingine hawezi kuihariri. Tunaweza kutekeleza utendaji kufuta posts. Lakini unaweza kuona hapa kwamba tuna pretty kiasi vipengele vyote rudimentary kujenga baadhi kweli, kweli, nguvu na ya kusisimua mtandao programu. Hivyo, pamoja na kwamba, nadhani sisi ni nzuri. Je guys una maswali yoyote? Ndiyo? SPIKA 3: Jinsi ya kufanya wewe kupata maudhui tuli? ERIC Ouyang: maudhui tuli. Hivyo wewe aliona kabla ya kuwa wakati tulikuwa haki hii hapa, maudhui hii layout, mtazamo kufanya, sisi alikuwa na haya bila safu hii baadaye. Blog.index, tulikuwa hii kama tu faili tuli. Hivyo kama hatuwezi kupita chochote pamoja na hayo, utakuwa tu atatoa HTML moja kwa moja. Lakini kama sisi kupita katika associative hii safu ya posts, ambayo ni dynamically vunjwa kutoka database, sisi wanaweza kufanya ukurasa nguvu. Baridi. Yoyote maswali mengine? SPIKA 3: Jinsi gani unaweza kulinganisha Laravel kwa labda baadhi ya chaguzi nyingine? ERIC Ouyang: Sure. Yeah. Hivyo Laravel is-- kwamba question-- kubwa moja ya chaguzi nyingi kwa ajili ya mfumo mtandao. Hivyo Ruby juu ya reli ni moja kwamba ni maarufu. Naamini Twitter kutumika kuwa kutekelezwa na Ruby juu ya reli. Nadhani wameweza tangu switched. Kuna mwingine mtu mmoja aitwaye FuelPHP. Hivyo Ruby juu ya reli inatumia lugha Ruby na kutekeleza mengi ya MVC mambo kwamba sisi kuona hapa. FuelPHP ni mfumo PHP nyingine. Django ni moja ya favorites yangu. Ni mfumo wa mtandao kwa ajili Python. Hivyo unaweza kuandika mtandao programu yako katika Python. Hivyo kuna tani ya chaguzi hizi. Laravel, nadhani, kwa kubwa ni favorite haki yangu sasa kwa ajili ya PHP kwa sababu tu ya vipengele kwamba kuongelea mapema. Ni ya mtunzi kuwezeshwa. Ni pamoja na kweli, kweli expressive ORM mfumo. Pia ina templating kweli kutisha lugha ambayo baadhi ya watu wengine si tu kutoa. Na uhamiaji. Uhamiaji ni kutisha pia. Cool? Kutisha. Naam, shukrani sana kwa kuangalia semina hii, na bahati nzuri katika miradi yako ya mwisho.