Kuidas integreerida Supabase Laraveliga andmebaasi ja salvestusruumi jaoks?

Viimane uuendus: 5 detsember 2025
  • Laraveli seadistamine Supabase Postgresi andmebaasi kasutamiseks hõlmab draiveri, skeemi ja keskkonnamuutujate õiget kohandamist.
  • Supabase'i spetsiifiline Laraveli draiver lahendab automaatselt päringute ja liitude UUID-veergudega seotud levinud probleemid.
  • Flysystemi adapter võimaldab teil Supabase Storage'i käsitleda lihtsalt järjekordse Laraveli kettana, integreerides hõlpsalt failide üleslaadimise.
  • Privilegeeritud teenusevõtmete ja hästi konfigureeritud ämbrite kasutamine on kirjutamisvigade vältimiseks ja stabiilse voo tagamiseks võtmetähtsusega.

Supabase Laraveli jaoks

Kui töötad Laraveliga ja oled pühendunud taustaprogrammeerimine ja sa tunned, et tahaksid andmebaasi hüpata kaasaegne, hallatud PostgreSQL nagu SupabaseOled ilmselt märganud, et .env-failis vaid paari muutuja muutmisest ei piisa. On olemas ühenduse üksikasjad, skeemid, autentimine ja failide salvestamine, mille tähelepanuta jätmine võib põhjustada üsna krüptilisi vigu.

Lisaks, kui soovite minna sammu edasi ja kasutada Supabase failisalvestusena Laraveli salvestussüsteemiga integreerituna muutuvad asjad veidi keerukamaks: teenusevõtmed, ämbrid, lõpp-punktid, kohandatud Flysystemi draiverid jne. Hea uudis on see, et kõike – andmebaasi, salvestusruumi ja UUID-de haldamist – saab üsna puhtal viisil ideaalselt integreerida.

Laraveli ühendamine Supabase'i andmebaasiga

Esimene samm on toimiva Laraveli projekti loomine ja selle linkimine Supabase'i pakutava Postgresi andmebaasiga. Selleks on vaja keskkonda, kus on PHP ja Composer on uuendatud ja looge uus projekt või kasutage olemasolevat. Konsoolis genereerige lihtsalt projekt tüüpilise Laraveli käsuga ja seejärel alustage ühenduse seadistamist.

Kui projekti skelett on olemas, on tavapärane samm lihtsa autentimissüsteemi installimine. Laravel Breeze sobib siia väga hästi, kuna see sisaldab järgmist: Tera mallid ja põhiline sisselogimise ja registreerimise protsessSee võimaldab teil kiiresti kontrollida, kas teie andmebaasiühendus on õigesti konfigureeritud ja kas saate kasutajaid probleemideta luua.

Ühenduse üksikasjade saamiseks logige sisse oma Supabase'i paneelile ja looge uus andmebaasiprojekt (seda saate teha otse aadressilt andmebaas.uus(mis suunab viisardisse). Kui sul pole veel kontot, näed esmalt registreerimisekraani; kui sul on see juba olemas, suunatakse sind otse projekti seadetesse ja jaotisse, kus saad kontrollida ühendusstringi.

Projekti lehelt leiate ühenduste jaotisest sellise nupu nagu "Connect" või sarnane. Sellele klõpsates kuvab Supabase teile mitu ühendusstringi vormingut (URI, üksikud parameetrid jne). Kopeerige kogu URI, kuid pidage meeles, et peate parooli asendamine selle jaoks, mida sa andmebaasis tegelikult kasutad, kuna sageli kuvatakse vaikeväärtust või kohatäidet.

Selle teabe abil peate minema oma Laraveli projekti .env-faili ja värskendama muutujaid DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME ja DB_PASSWORD või konfigureerima muutuja DATABASE_URL, kui eelistate kasutada täielikku stringivormingut. Eesmärk on, et kõik osutaks aadressile Supabase Postgresi klaster ja mitte teie localhost'i.

Postgresi draiveri ja Supabase'i skeemi seadistamine Laravelis

Laravelis on andmebaasi konfigureerimise võtmefail config/andmebaas.phpKuigi raamistikuga kaasasolevat pgsql-draiverit saab otse kasutada, on Supabase'iga töötades tavaline rakendada mõningaid täiendavaid kohandusi, eriti skeemide ja Postgres-spetsiifiliste valikute osas.

Tüüpiline Postgresi konfiguratsioon Laravelis võib ühenduste massiivis võtme all välja näha selline 'pgsql':

'pgsql' => ,

Võti peitub siin parameetris otsingu_teeSupabase kasutab vaikimisi avalikku skeemi, mis on nähtav selle API-de kaudu. Kui soovite oma Laraveli rakenduse sellest skeemist eraldi hoida ja vältida tabelite või poliitikate konflikte, on tungivalt soovitatav näiteks otsingutee (search_path) oma skeemiks muuta. laravel, nagu eelmises näites näha.

Sel viisil luuakse teie projekti loodud migratsioonid ja tabelid selles alternatiivses skeemis, mitte avalikult. See eraldamine muudab haldamise palju lihtsamaks. turvareeglid, RLS ja juurdepääs Supabase'i paneelilt ilma millegi peale astumata, millele ei tohiks, ja hoides andmebaasi struktuuri korras.

  MySQL GROUP BY avaldus koos näidetega

Kui olete konfiguratsioonifaili kohandanud, saate migratsioonid käivitada tavapäraste Laraveli käskudega. See loob autentimistabelid ja kõik muud teie määratletud tabelid. Kui kõik on õigesti konfigureeritud, käivituvad käsud Supabase Postgres ilma et sa peaksid midagi muud tegema.

Kui migreerimine on lõppenud, käivitage arendusserver käsuga `artisan serve` ja proovige kasutajaid registreerida ja sisse logida. Kui ühenduse ega migreerimise vigu ei ilmu, tähendab see, et Laravel töötab. Supabase'iga korrektne suhtlemine ja saate ka Jätka oma äriloogika arendamist tavaliselt.

Spetsiifilise Supabase'i draiveri kasutamine Laravelis

Kuigi standardne pgsql draiver töötab, on olemas pakett, mis lisab Supabase'i andmebaasi draiver Laraveli jaoks, laiendades PostgreSQL-i käitumist väga kasulike täiustustega, eriti UUID-veergude käsitlemise ja päringute ülesehituse osas.

See pakett, mida levitatakse nime all prahsys/laravel-supabase, installitakse Composeri kaudu ja see registreerib täiendava draiveri nimega supabase, mida saate kasutada oma config/database.php failis. Sisemiselt põhineb see Laraveli Postgresi draiveril, kuid sisaldab järgmist. seaded ja otsingu grammatika optimeeritud spetsiifilise Supabase keskkonna jaoks.

Kui see on installitud, võiksite deklareerida midagi sellist seespool ühenduste sektsioon:

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

Selle draiveri eeliseks on see, et saate endiselt kogu Postgresi mootori võimsuse, kuid see käsitleb automaatselt ka Supabase'i teatud tundlikke detaile, eriti töötades UUID-d primaarvõtmete või seoseväljadenaSee väldib iga keerulise päringu jaoks käsitsi ülekande kirjutamist.

Pakett on loodud sobima hästi ka raamistiku ja PHP kaasaegsete versioonidega, pakkudes ametlikku ühilduvust Laravel 10.x, 11.x, 12.x ja PHP-ga alates versioonist 8.1, samuti mis tahes standardse PostgreSQL-i andmebaasiga, sealhulgas muidugi Supabase'iga.

Kõikide korrektseks toimimiseks sisaldab pakett automatiseeritud testide komplekti. Teste saab käivitada käsuga `composer test`, mis kasutab kiiruse huvides mälus olevat SQLite andmebaasi, või valmistada ette `.env.testing` fail, mis osutab teie Supabase'ile, ja käivitada käsu `composer test-supabase`, et kontrollida selle toimimist reaalses keskkonnas. Kaug-Postgres.

UUID-de haldamine Supabase'is ja Laravelis

Supabase'il on UUID-veergudega omapära: kui proovite UUID-d otse tekstistringiga võrrelda ilma teisendamiseta, võib päring ebaõnnestub või annab ootamatuid tulemusi"Lihtsas" Postgresis saaks selle lahendada globaalsete teisenduste või kohandatud operaatoritega, kuid Supabase'is pole need globaalsed kohandused lubatud.

See tähendab kui stiili otsene uurimine:

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

See ei toimi nagu oodata võiks. Kui aga viite läbi selgesõnalise castingu:

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

Päring õnnestus. Probleem on selles, et Laravelis ei taha Eloquenti või päringukoostajaga päringuid kirjutades minna... CAST-i panemine igasse kohtaSiin tulebki mängu eelmainitud paketist pärit supabase draiver, mis hoolitseb nende muundumiste lisamise eest sinu eest.

Kui see draiver on aktiivne, saate teha järgmist. levinud päringud kui:

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

Ja mitte ainult otsekonsultatsioonidel, vaid ka liitubNäiteks kui soovite postitusi hankida ja need UUID-välja abil kasutajate tabeliga ühendada, võiksite teha midagi sellist:

$posts = Post::join('users', 'posts.user_id', '=', 'users.id')
    ->where('users.email', 'test@example.com')
    ->get();

Juht vastutab selle rakendamise eest. tekstisõnumite saatmiseks vajalikud kassetid asjakohastes UUID veergudes läbipaistvalt. Nii jääb teie kood Laraveli jaoks idioomaatiliseks ja te ei pea kirjutama toorest SQL-i ega kasutama igas keerulises päringus imelikke nippe.

  Kõik Tkinteri kohta: Pythoni graafiliste liideste teek

Kui soovite täpsemat kontrolli selle üle, milliseid veerge UUID-dena käsitletakse, pakub pakett seda omadust CastsUuidColumns oma Eloquent mudelite jaoks. Lihtsalt kasutage seda mudeliklassis ja defineerige kaitstud massiiv lisaveergudest:

use Prahsys\Supabase\Traits\CastsUuidColumns;

class Post extends Model
{
    use CastsUuidColumns;

    protected $uuidColumns = ;
}

See omadus teeb kolme olulist asja: see lisab vaikimisi UUID-na primaarvõtme ja lisab kõik atribuudis deklareeritud veerud. $uuidColumns ja edastab selle teabe päringukoostajale, et see teaks, kuhu teisendusi rakendada. Seega muutub kogu UUID-dega seotud andmetele juurdepääs järjepidev ja automatiseeritud.

Veelgi keerulisemate juhtumite puhulSaate registreerida kohandatud UUID-veerudetektori. PostgresGrammar paketi abil saate määrata tagasihelistusfunktsiooni, mis veeru nime või päringu konteksti põhjal otsustab, kas seda tuleks käsitleda UUID-na. Näiteks:

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

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

Selle funktsiooni abil saab süsteem UUID-dena käsitleda kõiki veerge, mille nimel on teatud muster või mis asuvad kindlas loendis, kohandudes vastavalt väga spetsiifilised nimetamiskonventsioonid teie projektist.

Integreeri Supabase Storage failisüsteemina Laraveli

Lisaks andmebaasile peavad paljud projektid salvestama pilte, dokumente või muid kasutajate üleslaaditud faile. Supabase sisaldab ämbripõhist salvestusteenust, mida saate kasutada järgmiselt: Laraveli ketas Flysystemi abilSelleks on olemas spetsiaalne adapter, mis võimaldab Supabase Storage'i käsitleda lihtsalt järjekordse draiverina failis config/filesystems.php.

Kõnealune pakett pakub Flysystemi adapterit, mis integreerub läbipaistvalt raamistiku salvestussüsteemiga. See vastab järgmistele miinimumnõuetele: PHP >= 8.1, Laravel 10.x või 11.x ja PHP fileinfo laiendus (ext-fileinfo), mida Laravel juba failide haldamiseks soovitab. Installimine toimub Composeriga ja kui see on lisatud, peate konfiguratsioonis määratlema vaid supabase ketta.

Failis config/failisüsteemid.phpMassiivi ketaste sees lisaksite midagi sarnast järgmisega:

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

Ämbri parameeter on tavaliselt lihtsalt salvestuskoha nimi mille lõite Supabase'i paneelil (näiteks myapp-file-uploads). Lõpp-punkt on projekti salvestusteenuse baas-URL, mis on nähtav ka paneeli vastavas osas ja mis tuletatakse tavaliselt projekti URL-ist ja piirkonnast.

Valik „public” näitab, kas ämbri sisu käsitletakse vaikimisi avalikuna. Kui see on „true”, genereerib adapter ligipääsetavad URL-id ilma spetsiaalse allkirjata; kui see on „false”, hakkab mängu valik „defaultUrlGeneration”, mis saab sundida allkirjastatud URL-ide genereerimist aegumisajaga, mis on määratud valikuga „signedUrlExpires”. See konfiguratsioon võimaldab koormust tasakaalustada. turvalisus ja mugavus olenevalt teie hallatavate failide tüübist.

Üldine ketta URL jäetakse tavaliselt tühjaks, nii et adapter tuletab selle automaatselt lõpp-punktist. Seda tuleks puudutada ainult siis, kui kasutate puhverserveri või vaheühendi CDN ja soovite, et genereeritud marsruudid osutaksid sellele domeenile, mitte Supabase'i natiivsele domeenile.

Üleslaadimisvigade tõrkeotsing ja Supabase Storage'i toimimise põhimõtete mõistmine

Laravelist failide Supabase Storage'i üleslaadimisel on üsna levinud probleem selliste teadete saamine nagu „Faili kirjutamine asukohas ebaõnnestus: üleslaadimised/…“Tavaliselt näitab see, et kuigi draiver on konfigureeritud, keelab Supabase kirjutamistoimingu ebapiisavate õiguste või valesti konfigureeritud võtme tõttu.

Config/filesystems.php supabase-ketta konfiguratsioonis mainitakse kasutamist "privilegeeritud võti" võtmeväljal, märkides selgesõnaliselt, et kirjutuskaitstud võti ei tööta. See tähendab, et peate kasutama teenusevõtit, millel on ämbrile kirjutamisõigused, mitte lihtsalt kliendile mõeldud avalikku API-võtit või S3-ühilduvuse jaoks mõeldud võtit ilma muutmisõigusteta.

Supabase'i paneelil API ja salvestusruumi konfiguratsiooni jaotises leiate nii anonüümsed võtmed kui ka teenuse_roll või samaväärneNeed on laiendatud õigustega võtmed. See on teenusevõti, mitte avalik võti, mille peaksite paigutama muutujasse SUPABASE_SECRET_ACCESS_KEY, mille draiver seejärel env('SUPABASE_SECRET_ACCESS_KEY') kaudu loeb.

  SQL Server 2019: uued funktsioonid ja funktsioonid

Kui olete testinud salvestuskonfiguratsioonist pärit S3-võtmega või projekti üldiste API-võtmetega, on väga tõenäoline, et neil volitustel pole õigust konkreetsesse ämbrisse kirjutada, mille tulemuseks on kirjutamisviga. Võtme väärtuse muutmine väärtuseks kehtiv teenusevõti kirjutamisõigustega Ja kinnitades, et ämber on olemas ja õigesti kirjutatud, on probleem tavaliselt lahendatud.

Lisaks võtmele on oluline kontrollida, et SUPABASE_STORAGE_BUCKET-is määratletud ämber vastaks täpselt Supabase'i liideses loodule, arvestades suur- ja väiketähti, ning et lõpp-punkt vastaks selle salvestusinstantsi õigele URL-ile. Üksikasjad, näiteks lisamärk või vale domeen, võivad adapteri tööd takistada. leidke failide tegelik sihtkoht.

Töövoog Laravel Breeze'i, Blade'i ja Supabase Storage'iga

Kui andmebaas ja salvestusruum on seadistatud, on järgmine loomulik samm kõige integreerimine oma Laravel Breeze'i liides ja Blade'i mallidNii saavad kasutajad registreeruda, autentida ja faile Supabase'i üles laadida Laraveli ökosüsteemist lahkumata.

Oma kontrollerite sees kasutaksite Ladustamisfassaad osutab supabase kettale. Näiteks vormilt saadud faili üleslaadimiseks koos faili sisendiga võiksite teha midagi sellist:

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

See kood käsib Laravelil ketast kasutada supabaas ja asetage fail konfigureeritud ämbri virtuaalsesse üleslaadimiste kausta. Kui võti ja lõpp-punkt on õiged, laaditakse fail üles Supabase'i salvestusruumi ja saate selle tee hankida või avalikke või allkirjastatud URL-e genereerida standardsete salvestusmeetodite abil.

Selle lähenemisviisi eeliseks on see, et teie rakendusel on salvestuseks üks liides, olenemata sellest, kas see kasutab kohalikku ketast, Amazon S3-d, Supabase'i või muud toetatud teenust. Pakkujate vahetamine on vähenenud kohanda config/filesystems.php faili ja keskkonnamuutujad, äriloogikat puutumata.

Kombineerides seda Blade'i ja Breeze'iga, saate pakkuda üleslaadimisvorme, faililoendeid ja allalaadimislinke, mis on täielikult integreeritud teie rakenduse kasutuskogemusse. Lisaks võimaldab Supabase Storage'i ämbri- ja poliitikapõhine lähenemisviis teil selle eeliseid ära kasutada. juurdepääsukontrollid ja turvareeglid et määrata, mida iga kasutaja näeb või alla laadida saab.

See pakettide, draiverite ja konfiguratsioonide ökosüsteem võimaldab Laravelil Supabase'iga väga mugavalt töötada, nii Postgresi relatsioonandmete aspektis kui ka... failide salvestamine ja UUID-de haldamineVõtmete, skeemide ja draiverite õige reguleerimisega saavutate väga kindla integratsiooni, mis väldib paljusid tüüpilisi vigu, mis tekivad mõlema platvormi käsitsi ja ilma nende abikihtideta ühendamisel.

Laraveli ühendamine Supabase'iga andmebaasi ja salvestusruumi jaoks, spetsiaalse Supabase'i draiveri kasutamine UUID-de sujuvaks haldamiseks ja Flysystemi adapteri kasutamine salvestusruumi jaoks võimaldab teil luua kaasaegseid rakendusi, kus Kogu keeruline infrastruktuur on kapseldatud Laraveli puhta API telgitagune info alates migratsioonidest ja autentimisest kuni failide üleslaadimiseni turvalistesse ämbritesse.

Blade Hastacki direktiiv Laravelis
Seotud artikkel:
Blade'i direktiiv hasStack Laravelis ja täiustatud pinuhaldus