Ungayihlanganisa kanjani i-Supabase ne-Laravel ye-database nokugcinwa

Isibuyekezo sokugcina: December 5 we-2025
  • Ukulungiselela i-Laravel ukusebenzisa isizindalwazi se-Supabase Postgres kuhilela ukulungisa kahle umshayeli, i-schema, nokuguquguquka kwemvelo.
  • Umshayeli othile we-Supabase we-Laravel uxazulula ngokuzenzakalela izinkinga ezivamile ngamakholomu e-UUID emibuzweni nasekujoyineni.
  • I-adaptha ye-Flysystem ikuvumela ukuthi uphathe i-Supabase Storage njengenye idiski ye-Laravel, ehlanganisa kalula ukulayishwa kwamafayela.
  • Ukusebenzisa okhiye besevisi abakhethekile namabhakede amiswe kahle kuyisihluthulelo sokugwema amaphutha okubhala nokuqinisekisa ukugeleza okuzinzile.

Supabase for Laravel

Uma usebenza neLaravel futhi uzinikele ekuhleleni i-backend , futhi ufuna ukudlulela kusizindalwazi se-PostgreSQL sesimanje, esiphethwe njenge-Supabase , cishe usuqaphele ukuthi ukushintsha nje iziguquguquko ezimbalwa kufayela le-.env akwanele. Kunemininingwane yokuxhumana, ama-schema, ukuqinisekiswa, kanye nesitoreji samafayela, uma kunganakwa, kungaholela emaphutheni athile ayimfihlo.

Ngaphezu kwalokho, uma ufuna ukuya phambili futhi usebenzise i-Supabase njengesitoreji samafayela esihlanganiswe nohlelo lwediski lukaLaravel (Isitoreji), izinto ziba nzima kakhulu: okhiye besevisi, amabhakede, ama-endpoint, abashayeli be-Flysystem abangokwezifiso, njll. Izindaba ezinhle ukuthi konke kungahlanganiswa kahle—isizindalwazi, isitoreji, kanye nokuphathwa kwe-UUID—ngendlela ehlanzekile impela.

Ixhuma i-Laravel kusizindalwazi se-Supabase

Isinyathelo sokuqala ukuba nephrojekthi ye-Laravel esebenzayo bese uyixhumanisa nedathabheyisi ye-Postgres enikezwe yi-Supabase. Ukuze wenze lokhu, udinga indawo ene -PHP ne-Composer ebuyekeziwe , futhi ungakha iphrojekthi entsha noma usebenzise ekhona kakade. Ukusuka kukhonsoli, mane udale iphrojekthi usebenzisa umyalo ojwayelekile we-Laravel bese uqala ukusetha uxhumano.

Uma usunohlaka lwephrojekthi, umkhuba ojwayelekile ukufaka uhlelo lokuqinisekisa olulula. I-Laravel Breeze ingena kahle kakhulu ngoba ifaka amathempulethi e-Blade kanye nokugeleza kokungena nokubhalisa okuyisisekelo , okukuvumela ukuthi uqinisekise ngokushesha ukuthi uxhumano lwakho lwedathabheyisi luhlelwe kahle nokuthi ungadala abasebenzisi ngaphandle kwezinkinga.

Ukuze uthole imininingwane yokuxhumeka, ngena ngemvume kudeshibhodi yakho ye-Supabase bese udala iphrojekthi entsha yedathabheyisi (ungakwenza lokhu ngqo kusuka ku -`database.new` , eqondisa kabusha ku-wizard). Uma ungenayo i-akhawunti, uzobona kuqala isikrini sokubhalisa; uma usunayo kakade, uzoya ngqo kuzilungiselelo zephrojekthi kanye nesigaba lapho ungathola khona intambo yokuxhumeka.

Ngaphakathi kwekhasi lephrojekthi, esigabeni soxhumano, uzothola inkinobho ethi "Xhuma" noma into efanayo. Ukuyichofoza kuzobonisa amafomethi amaningana ezintambo zoxhumano (i-URI, amapharamitha ngamanye, njll.). Kopisha i-URI ephelele, kodwa khumbula ukufaka iphasiwedi esikhundleni saleyo oyisebenzisela ngempela isizindalwazi, njengoba iphasiwedi noma isibambi sendawo esizenzakalelayo sivame ukuboniswa.

Ngalolo lwazi, udinga ukuya kufayela le-.env lephrojekthi yakho ye-Laravel bese ubuyekeza iziguquguquki ze-DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, kanye ne-DB_PASSWORD, noma ulungiselele iguquguquki ye-DATABASE_URL uma ukhetha ukusebenzisa ifomethi yentambo egcwele. Umgomo ukuqinisekisa ukuthi konke kukhomba eqenjini le -Supabase Postgres hhayi ku-localhost yakho.

Lungiselela umshayeli we-Postgres kanye ne-Supabase schema ku-Laravel

Ku-Laravel, ifayela eliyisihluthulelo lokucushwa kwedatha yi -config/database.php . Nakuba ungasebenzisa ngqo umshayeli we-pgsql oza nohlaka, uma usebenza ne-Supabase kuvamile ukusebenzisa ezinye izilungiselelo ezengeziwe, ikakhulukazi mayelana nama-schema kanye nezinketho ezithile ze-Postgres.

Ukucushwa kwe-Postgres okuvamile ku-Laravel kungase kubukeke kanje, ngaphakathi kwe-connections array, ngaphansi kwesihluthulelo 'pgsql' :

'pgsql' => ,

Isihluthulelo lapha sisepharamitha ethi `search_path` . I-Supabase, ngokuzenzakalelayo, isebenzisa i-schema ethi `public`, okuyiyona evezwa ngama-API ayo. Uma ufuna ukugcina uhlelo lwakho lokusebenza lwe-Laravel luhlukile kuleyo schema futhi ugweme ukungqubuzana kwethebula noma kwenqubomgomo, kunconywa kakhulu ukuthi ushintshe i-`search_path` ibe yi-schema yakho, isibonelo, `laravel` , njengoba kubonwe esibonelweni esedlule.

Ngale ndlela, ukufuduka namathebula akhiqizwe yiphrojekthi yakho kuzodalwa kulesi schema esihlukile hhayi esidlangalaleni. Lokhu kuhlukaniswa kwenza kube lula kakhulu ukuphatha imithetho yokuphepha, i-RLS, kanye nokufinyelela kusuka kuphaneli ye-Supabase ngaphandle kokubhala phansi noma yini okungafanele uyenze, ngenkathi kugcinwa isakhiwo sedatha sihlelekile.

  Ulimi Lokuhlela Lwe-Cobol: Uhlolojikelele Oluphelele

Uma usulungise ifayela lokucushwa, ungaqhuba ukufuduka usebenzisa imiyalo ejwayelekile ye-Laravel. Lokhu kuzodala amathebula okufakazela ubuqiniso kanye nanoma yimaphi amanye amathebula owachazile. Uma konke kulungiselelwe kahle, imiyalo izosebenza ngokumelene neseva ye -Supabase Postgres ngokuzenzakalelayo.

Uma ukufuduka sekuqediwe, qala iseva yokuthuthukisa nge-`artisan serve` bese uzama ukubhalisa nokungena ngemvume kubasebenzisi. Uma kungekho amaphutha okuxhumana noma okufuduka avelayo, kusho ukuthi i-Laravel ixhumana kahle ne-Supabase futhi ungaqhubeka nokwakha i-logic yebhizinisi lakho njengenjwayelo.

Ukusebenzisa umshayeli othile weSupabase eLaravel

Nakuba umshayeli we-pgsql ojwayelekile usebenza, kukhona iphakheji enezela umshayeli wedathabheyisi we-supabase we-Laravel , okwandisa ukuziphatha kwe-PostgreSQL ngokuthuthukiswa okuwusizo kakhulu, ikakhulukazi maqondana nokuphathwa kwamakholomu e-UUID kanye nendlela imibuzo eyakhiwe ngayo.

Le phakheji, esatshalaliswa njenge-prahsys/laravel-supabase, ifakwa nge-Composer futhi ibhalisa umshayeli owengeziwe obizwa ngokuthi i-supabase ongawusebenzisa kufayela lakho le-config/database.php. Ngaphakathi, isekelwe kumshayeli we-Postgres kaLaravel, kodwa ifaka izilungiselelo kanye nohlelo lolimi lwemibuzo olulungiselelwe indawo ethile ye-Supabase.

Uma usufakiwe, ungamemezela into efana nale elandelayo esigabeni sokuxhumeka :

'connections' => ,
    // otras conexiones...
],

Inzuzo yokusebenzisa lo mshayeli ukuthi usathola amandla aphelele enjini ye-Postgres, kodwa futhi iphatha ngokuzenzakalelayo imininingwane ethile ebucayi ye-Supabase, ikakhulukazi uma usebenza nama -UUID njengezihluthulelo eziyinhloko noma izinkambu zobudlelwano . Lokhu kugwema ukubhala ngesandla ukusakaza kuyo yonke imibuzo eyinkimbinkimbi.

Iphakheji futhi iklanyelwe ukuhambisana kahle nezinguqulo zesimanje zohlaka kanye ne-PHP, inikeza ukuhambisana okusemthethweni ne -Laravel 10.x, 11.x kanye ne-12.x kanye ne-PHP kusukela kunguqulo 8.1 kuya phambili, kanye nanoma iyiphi i-database ejwayelekile ye-PostgreSQL, kufaka phakathi i-Supabase.

Ukuqinisekisa ukuthi konke kusebenza kahle, iphakheji ifaka uhlu lwezivivinyo ezenzakalelayo. Ungaqhuba izivivinyo ngomyalo othi `composer test`, ozosebenzisa isizindalwazi se-SQLite esikumemori ukuze uthole isivinini, noma ulungiselele ifayela elithi `.env.testing` elikhomba ku-Supabase yakho bese usebenzisa i-`composer test-supabase` ukuqinisekisa ukuziphatha endaweni yangempela nge- Postgres ekude.

Ukuphathwa kwe-UUID eSupabase naseLaravel

I-Supabase inezici ezingavamile ngamakholomu e-UUID: uma uzama ukuqhathanisa i-UUID ngqo nentambo yombhalo ngaphandle kokufaka, umbuzo ungase wehluleke noma ubuyisele imiphumela engalindelekile . Endaweni engenalutho ye-Postgres, ungaxazulula lokhu ngama-cast omhlaba wonke noma ama-operators ngokwezifiso, kodwa i-Supabase ayivumeli ukwenza ngokwezifiso okunjalo komhlaba wonke.

Lokhu kusho ukuthi umbuzo oqondile wesitayela:

SELECT *
FROM users
WHERE id = '123e4567-e89b-12d3-a456-426614174000';

Ngeke kusebenze njengoba ungalindela. Kodwa-ke, uma wenza ukusakazwa okucacile:

SELECT *
FROM users
WHERE CAST(id AS TEXT) = '123e4567-e89b-12d3-a456-426614174000';

Umbuzo uyaphumelela. Inkinga ukuthi ku-Laravel, uma ubhala imibuzo nge-Eloquent noma umakhi wemibuzo, awufuni ukwengeza ama-CAST kuyo yonke i-WHERE clause . Yilapho kungena khona umshayeli we-supabase ovela kuphakheji eshiwo ngenhla, okungeza lawo ma-cast kuwe.

Uma lowo mshayeli esebenza, ungenza imibuzo evamile efana nalokhu:

$user = User::find($uuidString);
$user = User::where('id', $uuidString)->first();
$users = User::whereIn('id', )->get();

Futhi hhayi kuphela emibuzweni eqondile, kodwa naku- joins . Isibonelo, uma ufuna ukuthola okuthunyelwe bese ukujoyina nethebula labasebenzisi usebenzisa inkambu ye-UUID, ungenza into efana nale:

$posts = Post::join('users', 'posts.user_id', '=', 'users.id')
    ->where('users.email', '[email protected]')
    ->get();

Umshayeli uphatha ukusebenzisa ama-text cast adingekayo kumakholomu e-UUID afanele ngokusobala. Ngale ndlela, ikhodi yakho ihlala iyinto ejwayelekile ye-Laravel, futhi awudingi ukubhala i-SQL eluhlaza noma ukusebenzisa amaqhinga angajwayelekile kuyo yonke imibuzo eyinkimbinkimbi.

  Izinzuzo zokuthuthukiswa kwesofthiwe yangokwezifiso

Uma ufuna ukulawula okungcono kakhulu ukuthi yimaphi amakholomu abhekwa njengama-UUID, iphakheji inikeza isici se- CastsUuidColumns samamodeli akho e-Eloquent. Mane nje uyisebenzise ekilasini lakho lemodeli bese uchaza uhlu oluvikelwe lwamakholomu engeziwe:

use Prahsys\Supabase\Traits\CastsUuidColumns;

class Post extends Model
{
    use CastsUuidColumns;

    protected $uuidColumns = ;
}

Lesi sici senza izinto ezintathu ezibalulekile: sifaka ukhiye oyinhloko njenge-UUID ezenzakalelayo, sinezela noma yimaphi amakholomu owamemezelayo kumpahla ethi `$uuidColumns` , futhi sidlulisela lolu lwazi kumakhi wombuzo ukuze azi ukuthi kufanele asebenzise kuphi ama-cast. Lokhu kwenza konke ukufinyelela kwedatha okubandakanya ama-UUID kuhambisane futhi kuzenzekele.

Kumacala athuthukile nakakhulu , ungabhalisa isitholi sekholomu se-UUID esenziwe ngokwezifiso. Usebenzisa i-PostgresGrammar kusuka kuphakheji, ungacacisa umsebenzi wokuphinda ubize, ngokusekelwe egameni lekholomu noma umongo wombuzo, onquma ukuthi kufanele uphathwe njenge-UUID. Isibonelo:

use Prahsys\Supabase\Database\Query\Grammars\PostgresGrammar;

PostgresGrammar::detectUuidColumnsWith(function ($columnName, $query) {
    return str_contains($columnName, 'uuid_')
        || in_array($columnName, );
});

Ngokusetha lo msebenzi, uhlelo lungabheka njenge-UUID wonke amakholomu anamagama anephethini ethile noma angaphakathi kohlu oluthile, oluvumelana nemigomo ethile yokuqamba amagama yephrojekthi yakho.

Hlanganisa i-Supabase Storage njengohlelo lwefayela ku-Laravel

Ngaphezu kwesizindalwazi, amaphrojekthi amaningi adinga ukugcina izithombe, amadokhumenti, noma amanye amafayela alayishwe abasebenzisi. I-Supabase ifaka isevisi yokugcina esekwe ebhakedeni ongayisebenzisa njengediski kaLaravel nge-Flysystem . I-adaptha ethile iyatholakala ukuphatha i-Supabase Storage njengomshayeli owengeziwe ngaphakathi kwe-config/filesystems.php.

Iphakheji okukhulunywa ngayo inikeza i-adaptha ye-Flysystem ehlangana kalula nesistimu yokugcina yohlaka. Ihlangabezana nezidingo ezincane ze -PHP >= 8.1, i-Laravel 10.x kanye ne-11.x , kanye nesandiso se-PHP fileinfo (ext-fileinfo), i-Laravel evame ukuyincoma ekuphatheni amafayela. Ukufakwa kwenziwa kusetshenziswa i-Composer, futhi uma isifakiwe, udinga kuphela ukuchaza idiski ye-supabase ekucushweni.

Kufayela le -config/filesystems.php , ngaphakathi kwe-disks array, ungangeza into efana nalokhu okulandelayo:

'supabase' => ,
    ],
    'signedUrlExpires' => 60 * 60 * 24,
],

Ipharamitha ethi `ibhakede` ivame ukuba igama lebhakede lokugcina olidalile kudeshibhodi ye-Supabase (isibonelo, `i-myapp-file-uploads`). `I-endpoint` iyi-URL eyisisekelo yesevisi yokugcina iphrojekthi, ebonakala futhi esigabeni esihambisanayo sedeshibhodi, futhi ivame ukutholakala ku-URL yephrojekthi kanye nesifunda.

Inketho ethi `public` ikhombisa ukuthi okuqukethwe yibhakede kuzophathwa njengokusesidlangalaleni ngokuzenzakalelayo. Uma `true`, i-adaptha izokhiqiza ama-URL afinyelelekayo ngaphandle kwesiginesha ekhethekile; uma `false`, inketho ethi `defaultUrlGeneration` iyaqala ukusebenza, okungaphoqa ukukhiqizwa kwama-URL asayiniwe ngesikhathi sokuphelelwa yisikhathi esichazwe yi-`signedUrlExpires`. Lokhu kulungiselelwa kukuvumela ukuthi ulinganisele ukuphepha kanye nokulula kuye ngohlobo lwamafayela owaphathayo.

I-URL yediski evamile ivame ukushiywa njengengenalutho ukuze i-adaptha iyithole ngokuzenzakalelayo endaweni yokugcina. Kufanele uyishintshe kuphela uma usebenzisa i- intermediary proxy noma i-CDN futhi ufuna imizila ekhiqizwe ikhombe kuleso sizinda esikhundleni sesizinda se-Supabase sendawo.

Xazulula amaphutha okulayisha futhi uqonde ukhiye Wesitoreji Se-Supabase

Inkinga evamile kakhulu lapho uzama ukulayisha amafayela ku-Supabase Storage evela ku-Laravel ukuthola imiyalezo efana nokuthi “Ayikwazi ukubhala ifayela endaweni: ukulayisha/…” . Lokhu kuvame ukukhombisa ukuthi, yize umshayeli elungiselelwe, i-Supabase iyakwenqaba ukusebenza kokubhala ngenxa yezimvume ezinganele noma ukucushwa kokhiye okungalungile.

Kufayela lokucushwa kwediski ye-supabase, `config/filesystems.php`, ukucushwa kucacisa kusetshenziswa "ukhiye onelungelo" ensimini ethi `key`, kusho ngokusobala ukuthi ukhiye wokufunda kuphela ngeke usebenze. Lokhu kusho ukuthi udinga ukusebenzisa ukhiye wesevisi onezimvume zokubhala ebhakedeni, hhayi nje ukhiye womphakathi we-API ohlangothini lweklayenti noma ukhiye wokuhambisana we-S3 ngaphandle kwezimvume zokuguqulwa.

Kuphaneli ye-Supabase, ngaphakathi kwesigaba se-API kanye nokulungiswa kwesitoreji, uzothola okhiye abangaziwa kanye nokhiye be-service_role (noma okulingana nabo) , abanamalungelo anwetshiwe. Yile key yesevisi, hhayi eyomphakathi, okufanele uyibeke ku-SUPABASE_SECRET_ACCESS_KEY variable, ezofundwa umshayeli usebenzisa i-env('SUPABASE_SECRET_ACCESS_KEY').

  Ukubaluleka kwezingosi zolwazi emhlabeni webhizinisi

Uma ubulokhu uhlola ngokhiye we-S3 kusukela ekucushweni kwesitoreji noma ngokhiye be-API abajwayelekile bephrojekthi, kungenzeka kakhulu ukuthi lezo ziqinisekiso azinazo izimvume zokubhala ebhakedeni elithile, okuholela ephutheni lokubhala. Ukushintsha inani lokhiye libe ukhiye wesevisi osebenzayo ngezimvume zokubhala nokuqinisekisa ukuthi ibhakede likhona futhi liqanjwe kahle ngokuvamile kuxazulula inkinga.

Ngaphezu kwephasiwedi, kubalulekile ukuqinisekisa ukuthi ibhakede elichazwe ku-SUPABASE_STORAGE_BUCKET lifana ncamashi nalelo elidalwe ku-interface ye-Supabase, ngokuphathelene nezinhlamvu ezinkulu nezincane, nokuthi indawo yokugcina ihambisana ne-URL efanele yaleso simo sokugcina. Imininingwane efana nohlamvu olwengeziwe noma isizinda esingalungile ingavimbela i-adaptha ekutholeni indawo yangempela yamafayela.

Ukuhamba komsebenzi nge-Laravel Breeze, i-Blade, ne-Supabase Storage

Uma usulungiselele isizindalwazi sakho kanye nesitoreji, isinyathelo esilandelayo esinengqondo ukuhlanganisa konke nesixhumi sakho se-Laravel Breeze kanye namathempulethi e-Blade . Ngale ndlela, abasebenzisi bangabhalisa, baqinisekise, futhi balayishe amafayela ku-Supabase ngaphandle kokushiya uhlelo lwe-Laravel.

Ngaphakathi kwezilawuli zakho, ungasebenzisa i -facade yesitoreji ekhomba kudiski ye-supabase. Isibonelo, ukuze ulayishe ifayela elitholwe efomini elinokufakwa kwefayela, ungenza into efana nale:

if ($request->hasFile('file')) {
    $path = $request->file('file')
        ->store('uploads', 'supabase');
}

Le khodi itshela i-Laravel ukuthi isebenzise idiski ye-Supabase bese ibeka ifayela ngaphakathi kwefolda yokulayisha okubonakalayo ngaphakathi kwebhakede elilungiselelwe. Uma ukhiye kanye nendawo yokugcina kulungile, ifayela lizolayishwa kusitoreji se-Supabase, futhi ungabuyisa indlela yalo noma udale ama-URL omphakathi noma asayiniwe usebenzisa izindlela zokugcina ezijwayelekile.

Inzuzo yale ndlela ukuthi uhlelo lwakho lokusebenza lugcina isikhombimsebenzisi esisodwa sokugcina idatha, kungakhathaliseki ukuthi sisebenzisa idiski yendawo, i-Amazon S3, i-Supabase, noma enye isevisi esekelwayo. Ukushintsha abahlinzeki kuncishisiwe ekulungiseni i-config/filesystems.php kanye neziguquguquko zemvelo, ngaphandle kokuthinta i-logic yebhizinisi.

Ngokuhlanganisa lokhu ne-Blade ne-Breeze, unganikeza amafomu okulayisha, uhlu lwamafayela, kanye nezixhumanisi zokulanda ezihlanganiswe ngokugcwele nolwazi lomsebenzisi lohlelo lwakho lokusebenza. Ngaphezu kwalokho, indlela ye-Supabase Storage esekelwe ebhakedeni kanye nenqubomgomo ikuvumela ukuthi usebenzise izilawuli zayo zokufinyelela kanye nemithetho yokuphepha ukuze uchaze ukuthi umsebenzisi ngamunye angabuka noma alande ini.

Lonke lolu hlelo lokusebenza lwamaphakheji, abashayeli, kanye nokucushwa kuvumela i-Laravel ukuthi isebenze kahle ne-Supabase, kokubili maqondana nedatha yobudlelwano ne-Postgres kanye nesitoreji samafayela kanye nokuphathwa kwe-UUID . Ngokuhlela kahle okhiye, ama-schema, kanye nabashayeli, uthola ukuhlanganiswa okuqinile okugwema amaphutha amaningi ajwayelekile ahlangana nawo lapho uzama ukuxhumanisa womabili amapulatifomu ngesandla ngaphandle kwalezi zingqimba ezisekelayo.

Ukuxhuma i-Laravel ne-Supabase kudathabheyisi kanye nesitoreji, kusebenzisa umshayeli we-Supabase ozinikele ukuphatha ama-UUID ngaphandle kwezinkinga, kanye nokusebenzisa i-adaptha ye-Flysystem kukuvumela ukuthi wakhe izinhlelo zokusebenza zesimanje lapho yonke ingqalasizinda eyinkimbinkimbi ihlanganiswe khona ngemuva kwe-API ehlanzekile ka-Laravel, kusukela ekufudukeni nasekuqinisekisweni kuya ekulayisheni amafayela kuya emabhokisini avikelekile.

i-blade hastack isiqondiso ku-laravel
I-athikili ehlobene:
Umyalelo we-Blade une-Stack ku-Laravel nokulawula isitaki okuthuthukisiwe