วิธีการรวม Supabase กับ Laravel สำหรับฐานข้อมูลและที่เก็บข้อมูล

การปรับปรุงครั้งล่าสุด: 5 2025 ธันวาคม
  • การกำหนดค่า Laravel เพื่อใช้ฐานข้อมูล Supabase Postgres เกี่ยวข้องกับการปรับไดรเวอร์ สคีมา และตัวแปรสภาพแวดล้อมอย่างถูกต้อง
  • ไดร์เวอร์เฉพาะของ Supabase สำหรับ Laravel จะแก้ไขปัญหาทั่วไปที่เกิดขึ้นกับคอลัมน์ UUID ในแบบสอบถามและการรวมโดยอัตโนมัติ
  • อะแดปเตอร์ Flysystem ช่วยให้คุณสามารถจัดการ Supabase Storage ได้เหมือนกับดิสก์ Laravel อีกตัวหนึ่ง โดยบูรณาการการอัปโหลดไฟล์ได้อย่างง่ายดาย
  • การใช้คีย์บริการที่มีสิทธิพิเศษและบัคเก็ตที่กำหนดค่าอย่างดีถือเป็นกุญแจสำคัญในการหลีกเลี่ยงข้อผิดพลาดในการเขียนและรับรองการไหลที่เสถียร

Supabase สำหรับ Laravel

หากคุณทำงานกับ Laravel และทุ่มเทให้กับ การเขียนโปรแกรมแบ็กเอนด์ และคุณรู้สึกอยากจะก้าวไปสู่ฐานข้อมูล PostgreSQL ที่ทันสมัยและได้รับการจัดการเหมือน Supabaseคุณคงสังเกตเห็นแล้วว่าการเปลี่ยนแปลงตัวแปรเพียงไม่กี่ตัวในไฟล์ .env นั้นไม่เพียงพอ เนื่องจากมีรายละเอียดการเชื่อมต่อ โครงร่าง การรับรองความถูกต้อง และการจัดเก็บไฟล์ ซึ่งหากละเลยอาจทำให้เกิดข้อผิดพลาดที่ซับซ้อนได้

นอกจากนี้เมื่อคุณต้องการก้าวไปอีกขั้นและใช้งาน Supabase เป็นที่เก็บไฟล์ เมื่อบูรณาการกับระบบจัดเก็บข้อมูลของ Laravel สิ่งต่างๆ จะซับซ้อนขึ้นเล็กน้อย: คีย์บริการ บัคเก็ต เอ็นด์พอยต์ ไดรเวอร์ Flysystem แบบกำหนดเอง ฯลฯ ข่าวดีก็คือ ทุกอย่าง ไม่ว่าจะเป็นฐานข้อมูล พื้นที่จัดเก็บ และการจัดการ UUID สามารถบูรณาการได้อย่างสมบูรณ์แบบในรูปแบบที่ค่อนข้างสะอาด

การเชื่อมต่อ Laravel กับฐานข้อมูล Supabase

ขั้นตอนแรกคือการมีโปรเจ็กต์ Laravel ที่ใช้งานได้และเชื่อมโยงกับฐานข้อมูล Postgres ที่ Supabase จัดเตรียมไว้ สำหรับการนี้ คุณต้องมีสภาพแวดล้อมที่มี อัปเดต PHP และ Composer แล้ว และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่แล้ว จากคอนโซล เพียงสร้างโปรเจ็กต์ด้วยคำสั่ง Laravel ทั่วไป จากนั้นเริ่มตั้งค่าการเชื่อมต่อ

เมื่อคุณมีโครงร่างของโครงการแล้ว ขั้นตอนปกติคือการติดตั้งระบบยืนยันตัวตนแบบง่าย Laravel Breeze เข้ากันได้ดีเพราะประกอบด้วย เทมเพลตใบมีด และขั้นตอนการเข้าสู่ระบบและลงทะเบียนขั้นพื้นฐานวิธีนี้ช่วยให้คุณตรวจยืนยันได้อย่างรวดเร็วว่าการเชื่อมต่อฐานข้อมูลของคุณได้รับการกำหนดค่าอย่างถูกต้อง และคุณสามารถสร้างผู้ใช้ได้โดยไม่มีปัญหา

หากต้องการรับรายละเอียดการเชื่อมต่อ ให้เข้าสู่ระบบแผง Supabase ของคุณและสร้างโครงการฐานข้อมูลใหม่ (คุณสามารถดำเนินการนี้ได้โดยตรงจาก ฐานข้อมูลใหม่(ซึ่งจะนำคุณไปยังตัวช่วยสร้าง) หากคุณยังไม่มีบัญชี คุณจะเห็นหน้าจอลงทะเบียนก่อน หากคุณมีบัญชีอยู่แล้ว คุณจะไปที่การตั้งค่าโครงการและส่วนที่คุณสามารถตรวจสอบสตริงการเชื่อมต่อได้โดยตรง

ภายในหน้าโครงการ ในส่วนการเชื่อมต่อ คุณจะพบปุ่มเช่น "Connect" หรือคล้ายกัน เมื่อคุณคลิก Supabase จะแสดงรูปแบบสตริงการเชื่อมต่อหลายรูปแบบ (URI, พารามิเตอร์แต่ละตัว ฯลฯ) คัดลอก URI ทั้งหมด แต่โปรดจำไว้ว่าคุณต้อง เปลี่ยนรหัสผ่าน สำหรับสิ่งที่คุณใช้จริงในฐานข้อมูล เนื่องจากมักจะมีการแสดงค่าเริ่มต้นหรือตัวแทนแทน

ด้วยข้อมูลดังกล่าว คุณต้องไปที่ไฟล์ .env ของโปรเจกต์ Laravel และอัปเดตตัวแปร DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME และ DB_PASSWORD หรือกำหนดค่าตัวแปร DATABASE_URL หากคุณต้องการใช้รูปแบบสตริงแบบเต็ม เป้าหมายคือให้ทุกอย่างชี้ไปที่ คลัสเตอร์ Supabase Postgres และไม่ใช่กับโฮสต์ท้องถิ่นของคุณ

กำหนดค่าไดรเวอร์ Postgres และโครงร่าง Supabase ใน Laravel

ใน Laravel ไฟล์คีย์สำหรับการกำหนดค่าฐานข้อมูลคือ config/database.phpแม้ว่าคุณจะใช้ไดรเวอร์ pgsql ที่มาพร้อมกับเฟรมเวิร์กได้โดยตรง แต่เมื่อทำงานกับ Supabase เป็นเรื่องปกติที่จะต้องใช้การปรับแต่งเพิ่มเติม โดยเฉพาะอย่างยิ่งเกี่ยวกับรูปแบบและตัวเลือกเฉพาะของ Postgres

การกำหนดค่าทั่วไปสำหรับ Postgres ใน Laravel อาจมีลักษณะดังนี้ ภายในอาร์เรย์การเชื่อมต่อ ภายใต้คีย์ 'พีจีเอสแอล':

'pgsql' => ,

กุญแจสำคัญที่นี่คือพารามิเตอร์ เส้นทางการค้นหาโดยค่าเริ่มต้น Supabase จะใช้ schema สาธารณะ ซึ่งเป็น schema ที่เปิดเผยผ่าน API หากคุณต้องการแยกแอปพลิเคชัน Laravel ออกจาก schema นั้น และหลีกเลี่ยงความขัดแย้งของตารางหรือนโยบาย ขอแนะนำอย่างยิ่งให้เปลี่ยน search_path เป็น schema ของคุณเอง เป็นต้น Laravelตามที่เห็นในตัวอย่างก่อนหน้านี้

ด้วยวิธีนี้ การโยกย้ายและตารางที่สร้างโดยโครงการของคุณจะถูกสร้างขึ้นใน schema สำรองนั้น และจะไม่เผยแพร่สู่สาธารณะ การแยกนี้ทำให้การจัดการง่ายขึ้นมาก กฎความปลอดภัย RLS และการเข้าถึงจากแผง Supabase โดยไม่เหยียบย่ำสิ่งที่คุณไม่ควรทำและรักษาโครงสร้างฐานข้อมูลให้เป็นระเบียบ

  ภาษาการเขียนโปรแกรม Cobol: ภาพรวมที่สมบูรณ์

เมื่อคุณปรับแต่งไฟล์กำหนดค่าแล้ว คุณสามารถเริ่มการโยกย้ายได้โดยใช้คำสั่ง Laravel ตามปกติ ซึ่งจะสร้างตารางการตรวจสอบสิทธิ์และตารางอื่นๆ ที่คุณกำหนดไว้ หากกำหนดค่าทุกอย่างถูกต้อง คำสั่งจะทำงานตาม ซูเปอร์เบส โพสต์เกรส โดยที่คุณไม่ต้องทำอะไรอีก

เมื่อการไมเกรชันเสร็จสิ้น ให้เริ่มต้นเซิร์ฟเวอร์การพัฒนาด้วย `artisan serve` แล้วลองลงทะเบียนและล็อกอินผู้ใช้ หากไม่มีข้อผิดพลาดในการเชื่อมต่อหรือการไมเกรชัน แสดงว่า Laravel กำลังทำงานอยู่ การสื่อสารอย่างถูกต้องกับ Supabase และคุณสามารถ สร้างตรรกะทางธุรกิจของคุณต่อไป ตามปกติ

การใช้ไดรเวอร์ Supabase เฉพาะใน Laravel

แม้ว่าไดรเวอร์ pgsql มาตรฐานจะทำงานได้ แต่ก็มีแพ็คเกจที่เพิ่ม ไดรเวอร์ฐานข้อมูล supabase สำหรับ Laravelขยายพฤติกรรมของ PostgreSQL ด้วยการปรับปรุงที่มีประโยชน์มากมาย โดยเฉพาะอย่างยิ่งเกี่ยวกับการจัดการคอลัมน์ UUID และวิธีการสร้างแบบสอบถาม

แพ็กเกจนี้แจกจ่ายในชื่อ prahsys/laravel-supabase โดยติดตั้งผ่าน Composer และลงทะเบียนไดรเวอร์เพิ่มเติมชื่อ supabase ซึ่งคุณสามารถใช้ในไฟล์ config/database.php ได้ แพ็กเกจนี้ใช้ไดรเวอร์ Postgres ของ Laravel แต่ประกอบด้วย การตั้งค่าและการค้นหาไวยากรณ์ ได้รับการปรับให้เหมาะสมสำหรับสภาพแวดล้อม Supabase โดยเฉพาะ

เมื่อติดตั้งแล้ว คุณสามารถประกาศบางอย่างเช่นต่อไปนี้ภายใน ส่วนการเชื่อมต่อ:

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

ข้อดีของการใช้ไดรเวอร์นี้คือคุณยังคงได้รับพลังทั้งหมดของเอนจิ้น Postgres แต่ยังจัดการรายละเอียดที่ละเอียดอ่อนบางอย่างของ Supabase โดยอัตโนมัติ โดยเฉพาะเมื่อทำงานกับ UUID เป็นคีย์หลักหรือฟิลด์ความสัมพันธ์วิธีนี้จะช่วยหลีกเลี่ยงการต้องเขียนการแคสต์ด้วยตนเองสำหรับแต่ละแบบสอบถามที่ซับซ้อน

แพ็คเกจนี้ยังได้รับการออกแบบมาให้เหมาะสมกับเวอร์ชันใหม่ของเฟรมเวิร์กและ PHP อีกด้วย โดยให้ความเข้ากันได้อย่างเป็นทางการกับ ลาราเวล 10.x, 11.x, 12.x และด้วย PHP ตั้งแต่เวอร์ชัน 8.1 ขึ้นไป เช่นเดียวกับฐานข้อมูล PostgreSQL มาตรฐาน รวมถึง Supabase แน่นอน

เพื่อให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้อง แพ็กเกจนี้จึงรวมชุดการทดสอบอัตโนมัติไว้ด้วย คุณสามารถรันการทดสอบด้วยคำสั่ง `composer test` ซึ่งจะใช้ฐานข้อมูล SQLite ในหน่วยความจำเพื่อเพิ่มความเร็ว หรือเตรียมไฟล์ `.env.testing` ที่ชี้ไปยัง Supabase ของคุณ แล้วรัน `composer test-supabase` เพื่อตรวจสอบพฤติกรรมในสภาพแวดล้อมจริง Postgres ระยะไกล.

การจัดการ UUID ใน Supabase และ Laravel

Supabase มีลักษณะเฉพาะกับคอลัมน์ UUID: หากคุณพยายามเปรียบเทียบ UUID โดยตรงกับสตริงข้อความโดยไม่ต้องแปลงแบบสอบถามอาจ ล้มเหลวหรือส่งผลลัพธ์ที่ไม่คาดคิดในระบบ Postgres "แบบธรรมดา" คุณสามารถแก้ปัญหานี้ได้ด้วยการแปลงแบบทั่วโลกหรือตัวดำเนินการแบบกำหนดเอง แต่ใน Supabase การปรับแต่งแบบทั่วโลกเหล่านี้ไม่ได้รับอนุญาต

โดยนัยนี้ มากกว่าการสอบถามโดยตรงเกี่ยวกับสไตล์:

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

มันจะไม่ทำงาน ตามที่คุณคาดหวังไว้ อย่างไรก็ตาม หากคุณดำเนินการแคสต์แบบชัดเจน:

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

คิวรีสำเร็จแล้ว ปัญหาคือใน Laravel เมื่อคุณเขียนคิวรีด้วย Eloquent หรือตัวสร้างคิวรี คุณไม่ต้องการไปต่อ ใส่ CAST ในแต่ละที่นั่นคือจุดที่ไดรเวอร์ supabase จากแพ็คเกจที่กล่าวถึงข้างต้นเข้ามามีบทบาท ซึ่งจะดูแลการเพิ่มแคสต์เหล่านั้นให้กับคุณ

ด้วยไดรเวอร์นั้นที่ใช้งานอยู่ คุณสามารถดำเนินการได้ คำถามทั่วไป เป็น:

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

และไม่เพียงแต่การปรึกษาหารือโดยตรงเท่านั้น แต่ยังรวมถึง ร่วมตัวอย่างเช่น หากคุณต้องการดึงโพสต์และรวมเข้ากับตารางผู้ใช้โดยใช้ฟิลด์ UUID คุณสามารถดำเนินการดังนี้:

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

ผู้ขับขี่มีหน้าที่รับผิดชอบในการสมัคร แคสต์ที่จำเป็นสำหรับข้อความ ในคอลัมน์ UUID ที่เกี่ยวข้องอย่างโปร่งใส วิธีนี้ทำให้โค้ดของคุณยังคงมีความชัดเจนสำหรับ Laravel และคุณไม่จำเป็นต้องเขียน SQL ดิบๆ หรือใช้เทคนิคแปลกๆ ในทุกคิวรีที่ซับซ้อน

  วิธีที่จะกลายเป็นนักพัฒนาแอพมือถือที่ประสบความสำเร็จ

หากคุณต้องการควบคุมอย่างละเอียดมากขึ้นว่าคอลัมน์ใดถือเป็น UUID แพ็คเกจนี้มีคุณสมบัติดังนี้ CastsUuidColumns สำหรับโมเดล Eloquent ของคุณ เพียงใช้ในคลาสโมเดลและกำหนดอาร์เรย์ที่ได้รับการป้องกันของคอลัมน์เพิ่มเติม:

use Prahsys\Supabase\Traits\CastsUuidColumns;

class Post extends Model
{
    use CastsUuidColumns;

    protected $uuidColumns = ;
}

ลักษณะเฉพาะนี้จะทำสามสิ่งสำคัญ: โดยจะรวมคีย์หลักเป็น UUID ตามค่าเริ่มต้น และเพิ่มคอลัมน์ใดๆ ที่คุณประกาศในคุณสมบัติ $uuidColumns และสื่อสารข้อมูลนั้นไปยังตัวสร้างแบบสอบถามเพื่อให้ทราบว่าควรใช้การแปลงที่ใด ดังนั้น การเข้าถึงข้อมูลทั้งหมดที่เกี่ยวข้องกับ UUID จะกลายเป็น สม่ำเสมอและอัตโนมัติ.

สำหรับกรณีขั้นสูงยิ่งขึ้นคุณสามารถลงทะเบียนตัวตรวจจับคอลัมน์ UUID แบบกำหนดเองได้ เมื่อใช้แพ็กเกจ PostgresGrammar คุณสามารถระบุฟังก์ชันคอลแบ็กที่จะตัดสินว่าควรจัดการคอลัมน์นั้นเป็น UUID หรือไม่ โดยพิจารณาจากชื่อคอลัมน์หรือบริบทของคิวรี ตัวอย่างเช่น

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

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

เมื่อสร้างฟังก์ชันนี้แล้ว ระบบจะพิจารณาคอลัมน์ทั้งหมดที่มีชื่อที่มีรูปแบบเฉพาะหรืออยู่ในรายการเฉพาะเป็น UUID โดยปรับให้เข้ากับ หลักเกณฑ์การตั้งชื่อที่เฉพาะเจาะจงมาก ของโครงการของคุณ

รวม Supabase Storage เป็นระบบไฟล์ใน Laravel

นอกจากฐานข้อมูลแล้ว หลายโครงการยังจำเป็นต้องจัดเก็บรูปภาพ เอกสาร หรือไฟล์อื่นๆ ที่ผู้ใช้อัปโหลด Supabase มีบริการจัดเก็บข้อมูลแบบ Bucket-based ที่คุณสามารถใช้ประโยชน์ได้ ดิสก์ Laravel ที่ใช้ Flysystemเพื่อจุดประสงค์นี้ มีอะแดปเตอร์เฉพาะที่อนุญาตให้ Supabase Storage ได้รับการพิจารณาว่าเป็นเพียงไดร์เวอร์อีกตัวหนึ่งภายใน config/filesystems.php

แพ็กเกจดังกล่าวมีอะแดปเตอร์ Flysystem ที่ผสานรวมกับระบบจัดเก็บข้อมูลของเฟรมเวิร์กได้อย่างโปร่งใส ตรงตามข้อกำหนดขั้นต่ำของ PHP >= 8.1, Laravel 10.x หรือ 11.x และส่วนขยาย PHP fileinfo (ext-fileinfo) ซึ่ง Laravel แนะนำไว้สำหรับการจัดการไฟล์อยู่แล้ว การติดตั้งทำได้ด้วย Composer และเมื่อติดตั้งแล้ว คุณเพียงแค่กำหนดดิสก์ supabase ในคอนฟิกูเรชัน

ในไฟล์ config/filesystems.phpภายในดิสก์อาร์เรย์ คุณจะเพิ่มสิ่งที่คล้ายกับต่อไปนี้:

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

พารามิเตอร์ถังมักจะเป็นเพียง ชื่อถังเก็บข้อมูล ที่คุณสร้างในแผง Supabase (เช่น myapp-file-uploads) จุดสิ้นสุดคือ URL พื้นฐานของบริการจัดเก็บข้อมูลของโครงการ ซึ่งสามารถมองเห็นได้ในส่วนที่เกี่ยวข้องของแผง และโดยปกติแล้วจะมาจาก URL และภูมิภาคของโครงการ

ตัวเลือก `public` ระบุว่าเนื้อหาของบัคเก็ตจะถูกจัดการเป็นสาธารณะตามค่าเริ่มต้นหรือไม่ หากเป็น `true` อะแดปเตอร์จะสร้าง URL ที่เข้าถึงได้โดยไม่มีลายเซ็นพิเศษ หากเป็น `false` ตัวเลือก `defaultUrlGeneration` จะเริ่มทำงาน ซึ่งสามารถบังคับให้สร้าง URL ที่มีลายเซ็นพร้อมเวลาหมดอายุที่ระบุโดย `signedUrlExpires` การกำหนดค่านี้ช่วยให้คุณปรับสมดุลภาระงานได้ ความปลอดภัยและความสะดวกสบาย ขึ้นอยู่กับประเภทของไฟล์ที่คุณจัดการ

โดยปกติแล้ว URL ของดิสก์ทั่วไปจะถูกปล่อยทิ้งไว้เป็นค่าว่าง เพื่อให้อะแดปเตอร์ดึงข้อมูลมาจากจุดสิ้นสุดโดยอัตโนมัติ คุณควรใช้ URL นี้เฉพาะเมื่อคุณกำลังใช้ พร็อกซีหรือ CDN ระดับกลาง และคุณต้องการให้เส้นทางที่สร้างขึ้นชี้ไปที่โดเมนนั้นแทนโดเมน Supabase ดั้งเดิม

แก้ไขข้อผิดพลาดในการอัปโหลดและทำความเข้าใจกุญแจสำคัญของ Supabase Storage

ปัญหาที่พบได้บ่อยเมื่อพยายามอัปโหลดไฟล์ไปยัง Supabase Storage จาก Laravel คือการได้รับข้อความเช่น “ไม่สามารถเขียนไฟล์ที่ตำแหน่ง: อัปโหลด/…”โดยปกติสิ่งนี้บ่งชี้ว่าถึงแม้จะกำหนดค่าไดรเวอร์แล้ว แต่ Supabase ก็ยังปฏิเสธการดำเนินการเขียนเนื่องจากสิทธิ์ไม่เพียงพอหรือคีย์กำหนดค่าไม่ถูกต้อง

ในดิสก์ supabase ของ config/filesystems.php การกำหนดค่าจะกล่าวถึงการใช้ “กุญแจที่มีสิทธิพิเศษ” ในช่องคีย์ ระบุอย่างชัดเจนว่าคีย์แบบอ่านอย่างเดียวจะใช้ไม่ได้ ซึ่งหมายความว่าคุณต้องใช้คีย์บริการที่มีสิทธิ์เขียนบนบัคเก็ต ไม่ใช่คีย์ API สาธารณะที่มีไว้สำหรับไคลเอ็นต์ หรือคีย์ที่มีไว้สำหรับความเข้ากันได้กับ S3 โดยไม่มีสิทธิ์แก้ไข

ในแผง Supabase ภายในส่วนการกำหนดค่า API และที่เก็บข้อมูล คุณจะพบทั้งคีย์ที่ไม่ระบุชื่อและ service_role หรือเทียบเท่าคีย์เหล่านี้คือคีย์ที่มีสิทธิ์แบบขยาย คีย์บริการนั้น ไม่ใช่คีย์สาธารณะ ที่คุณควรใส่ไว้ในตัวแปร SUPABASE_SECRET_ACCESS_KEY ซึ่งไดรเวอร์จะอ่านผ่าน env('SUPABASE_SECRET_ACCESS_KEY')

  Crystal Reports: ฟังก์ชั่นและคุณสมบัติ

หากคุณทดสอบด้วยคีย์ S3 จากการกำหนดค่าที่เก็บข้อมูล หรือด้วยคีย์ API ทั่วไปจากโปรเจ็กต์ เป็นไปได้มากว่าข้อมูลรับรองเหล่านั้นไม่มีสิทธิ์ในการเขียนลงในบัคเก็ตเฉพาะ ส่งผลให้เกิดข้อผิดพลาดในการเขียน การเปลี่ยนค่าคีย์เป็น รหัสบริการที่ถูกต้องพร้อมสิทธิ์การเขียน และโดยปกติแล้วปัญหาจะได้รับการแก้ไขโดยการยืนยันว่าถังมีอยู่และเขียนอย่างถูกต้อง

นอกจากคีย์แล้ว สิ่งสำคัญคือต้องตรวจสอบว่าบัคเก็ตที่กำหนดใน SUPABASE_STORAGE_BUCKET ตรงกับบัคเก็ตที่สร้างในอินเทอร์เฟซ Supabase อย่างถูกต้อง โดยคำนึงถึงทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก และปลายทางสอดคล้องกับ URL ที่ถูกต้องสำหรับอินสแตนซ์พื้นที่เก็บข้อมูลนั้น รายละเอียดบางอย่าง เช่น อักขระพิเศษหรือโดเมนที่ไม่ถูกต้อง อาจทำให้อะแดปเตอร์ทำงานไม่ได้ ค้นหาปลายทางที่แท้จริงของไฟล์.

เวิร์กโฟลว์กับ Laravel Breeze, Blade และ Supabase Storage

เมื่อคุณตั้งค่าฐานข้อมูลและที่เก็บข้อมูลเรียบร้อยแล้ว ขั้นตอนต่อไปคือการรวมทุกอย่างเข้ากับ อินเทอร์เฟซ Laravel Breeze และเทมเพลต Bladeด้วยวิธีนี้ ผู้ใช้สามารถลงทะเบียน ยืนยันตัวตน และอัปโหลดไฟล์ไปยัง Supabase ได้โดยไม่ต้องออกจากระบบนิเวศ Laravel

ภายในตัวควบคุมของคุณ คุณจะใช้ หน้าอาคารเก็บของ ชี้ไปที่ดิสก์ supabase ตัวอย่างเช่น หากต้องการอัปโหลดไฟล์ที่ได้รับจากฟอร์มที่มีอินพุตไฟล์ คุณสามารถทำสิ่งต่อไปนี้:

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

โค้ดนี้บอก Laravel ให้ใช้ดิสก์ สุภาเบส และวางไฟล์ไว้ในโฟลเดอร์อัปโหลดเสมือนภายในบัคเก็ตที่กำหนดค่าไว้ หากคีย์และจุดสิ้นสุดถูกต้อง ไฟล์จะถูกอัปโหลดไปยังพื้นที่เก็บข้อมูล Supabase และคุณสามารถดึงเส้นทางหรือสร้าง URL สาธารณะหรือ URL ที่มีลายเซ็นโดยใช้วิธีการจัดเก็บข้อมูลมาตรฐาน

ข้อดีของวิธีนี้คือแอปพลิเคชันของคุณจะรักษาอินเทอร์เฟซเดียวสำหรับการจัดเก็บข้อมูล ไม่ว่าจะใช้ดิสก์ภายใน, Amazon S3, Supabase หรือบริการอื่นๆ ที่รองรับ การเปลี่ยนผู้ให้บริการจะลดลงเหลือ ปรับแต่ง config/filesystems.php และตัวแปรสภาพแวดล้อม โดยไม่แตะต้องตรรกะทางธุรกิจ

การผสานรวมกับ Blade และ Breeze ช่วยให้คุณสามารถนำเสนอแบบฟอร์มอัปโหลด รายชื่อไฟล์ และลิงก์ดาวน์โหลดที่ผสานรวมเข้ากับประสบการณ์ผู้ใช้แอปพลิเคชันของคุณได้อย่างสมบูรณ์ นอกจากนี้ แนวทางที่อิงตามถังและนโยบายของ Supabase Storage ยังช่วยให้คุณใช้ประโยชน์จาก การควบคุมการเข้าถึงและกฎความปลอดภัย เพื่อกำหนดว่าผู้ใช้แต่ละรายสามารถดูหรือดาวน์โหลดอะไรได้

ระบบนิเวศทั้งหมดของแพ็คเกจ ไดรเวอร์ และการกำหนดค่านี้ทำให้ Laravel สามารถทำงานร่วมกับ Supabase ได้อย่างสะดวกสบาย ทั้งในด้านข้อมูลเชิงสัมพันธ์กับ Postgres และใน... การจัดเก็บไฟล์และการจัดการ UUIDการปรับแต่งคีย์ สคีมา และไดรเวอร์อย่างเหมาะสม จะทำให้การผสานรวมมีความแข็งแกร่งมากขึ้น ซึ่งหลีกเลี่ยงข้อผิดพลาดทั่วไปหลายประการที่เกิดขึ้นเมื่อพยายามเชื่อมต่อทั้งสองแพลตฟอร์มด้วยตนเองและโดยไม่มีชั้นความช่วยเหลือเหล่านี้

การเชื่อมต่อ Laravel กับ Supabase สำหรับฐานข้อมูลและที่เก็บข้อมูล การใช้ประโยชน์จากไดรเวอร์ Supabase เฉพาะเพื่อจัดการ UUID ได้อย่างราบรื่น และการใช้ตัวแปลง Flysystem สำหรับที่เก็บข้อมูล ช่วยให้คุณสร้างแอปพลิเคชันที่ทันสมัยได้ โครงสร้างพื้นฐานที่ซับซ้อนทั้งหมดถูกห่อหุ้มไว้ เบื้องหลัง API ที่สะอาดของ Laravel ตั้งแต่การโยกย้ายและการตรวจสอบสิทธิ์ไปจนถึงการอัปโหลดไฟล์ไปยังบัคเก็ตที่ปลอดภัย

คำสั่ง blade hastack ใน laravel
บทความที่เกี่ยวข้อง:
คำสั่ง Blade hasStack ใน Laravel และการควบคุมสแต็กขั้นสูง