ডাটাবেস এবং স্টোরেজের জন্য লারাভেলের সাথে সুপাবেস কীভাবে একীভূত করবেন

সর্বশেষ আপডেট: 5 এর ডিসেম্বর 2025
  • Supabase Postgres ডাটাবেস ব্যবহারের জন্য Laravel কনফিগার করার জন্য ড্রাইভার, স্কিমা এবং পরিবেশ ভেরিয়েবল সঠিকভাবে সামঞ্জস্য করা প্রয়োজন।
  • লারাভেলের জন্য সুপাবেসের নির্দিষ্ট ড্রাইভার স্বয়ংক্রিয়ভাবে কোয়েরি এবং জয়েনগুলিতে UUID কলামের সাধারণ সমস্যাগুলি সমাধান করে।
  • ফ্লাইসিস্টেম অ্যাডাপ্টার আপনাকে সুপাবেস স্টোরেজকে কেবল আরেকটি লারাভেল ডিস্ক হিসেবে বিবেচনা করতে দেয়, যা সহজেই ফাইল আপলোডগুলিকে একীভূত করে।
  • লেখার ত্রুটি এড়াতে এবং স্থিতিশীল প্রবাহ নিশ্চিত করার জন্য বিশেষ সুবিধাপ্রাপ্ত পরিষেবা কী এবং সু-কনফিগার করা বাকেট ব্যবহার করা গুরুত্বপূর্ণ।

লারাভেলের জন্য সুপাবেস

যদি আপনি লারাভেলের সাথে কাজ করেন এবং নিবেদিতপ্রাণ হন ব্যাকএন্ড প্রোগ্রামিং আর তোমার মনে হচ্ছে একটা ডাটাবেসে লাফিয়ে উঠছি সুপাবেসের মতো পরিচালিত এবং আধুনিক PostgreSQLআপনি সম্ভবত লক্ষ্য করেছেন যে .env ফাইলে কেবল কয়েকটি ভেরিয়েবল পরিবর্তন করা যথেষ্ট নয়। সংযোগের বিবরণ, স্কিম, প্রমাণীকরণ এবং ফাইল স্টোরেজ রয়েছে যা অবহেলা করলে কিছু রহস্যময় ত্রুটি দেখা দিতে পারে।

তদুপরি, যখন আপনি আরও এক ধাপ এগিয়ে যেতে চান এবং ব্যবহার করতে চান ফাইল স্টোরেজ হিসেবে Supabase লারাভেলের স্টোরেজ সিস্টেমের সাথে ইন্টিগ্রেটেড হলে, জিনিসগুলি আরও জটিল হয়ে ওঠে: সার্ভিস কী, বাকেট, এন্ডপয়েন্ট, কাস্টম ফ্লাইসিস্টেম ড্রাইভার ইত্যাদি। ভালো খবর হল যে সবকিছুই—ডাটাবেস, স্টোরেজ এবং UUID হ্যান্ডলিং—একটি মোটামুটি পরিষ্কার উপায়ে নিখুঁতভাবে ইন্টিগ্রেটেড করা যেতে পারে।

লারাভেলকে সুপাবেস ডাটাবেসের সাথে সংযুক্ত করা হচ্ছে

প্রথম ধাপ হল একটি কার্যকর লারাভেল প্রকল্প থাকা এবং এটিকে সুপাবেস দ্বারা সরবরাহিত পোস্টগ্রেস ডাটাবেসের সাথে লিঙ্ক করা। এর জন্য, আপনার একটি পরিবেশের প্রয়োজন যার পিএইচপি এবং কম্পোজার আপডেট করা হয়েছে এবং একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি ব্যবহার করুন। কনসোল থেকে, সাধারণ Laravel কমান্ড ব্যবহার করে প্রকল্পটি তৈরি করুন এবং তারপর সংযোগ স্থাপন শুরু করুন।

একবার আপনার প্রকল্পের কাঠামো তৈরি হয়ে গেলে, স্বাভাবিক পদক্ষেপ হল একটি সহজ প্রমাণীকরণ সিস্টেম ইনস্টল করা। Laravel Breeze খুব ভালোভাবে ফিট করে কারণ এতে রয়েছে ব্লেড টেমপ্লেট এবং মৌলিক লগইন এবং নিবন্ধন প্রবাহএটি আপনাকে দ্রুত যাচাই করতে সাহায্য করে যে আপনার ডাটাবেস সংযোগ সঠিকভাবে কনফিগার করা হয়েছে এবং আপনি সমস্যা ছাড়াই ব্যবহারকারী তৈরি করতে পারেন।

সংযোগের বিশদ জানতে, আপনার Supabase প্যানেলে লগ ইন করুন এবং একটি নতুন ডাটাবেস প্রকল্প তৈরি করুন (আপনি এটি সরাসরি এখান থেকে করতে পারেন)। ডাটাবেস.নতুন(যা উইজার্ডে পুনঃনির্দেশিত হয়)। যদি আপনার এখনও কোনও অ্যাকাউন্ট না থাকে, তাহলে আপনি প্রথমে সাইন-আপ স্ক্রিনটি দেখতে পাবেন; যদি আপনার ইতিমধ্যেই একটি অ্যাকাউন্ট থাকে, তাহলে আপনি সরাসরি প্রকল্প সেটিংস এবং সেই বিভাগে যাবেন যেখানে আপনি সংযোগ স্ট্রিংটি পরীক্ষা করতে পারবেন।

প্রকল্প পৃষ্ঠার মধ্যে, সংযোগ বিভাগে, আপনি একটি বোতাম পাবেন যেমন "সংযুক্ত" অথবা অনুরূপ। যখন আপনি এটিতে ক্লিক করেন, তখন Supabase আপনাকে বেশ কয়েকটি সংযোগ স্ট্রিং ফর্ম্যাট (URI, পৃথক প্যারামিটার, ইত্যাদি) দেখায়। সম্পূর্ণ URI কপি করুন, তবে মনে রাখবেন যে আপনাকে অবশ্যই পাসওয়ার্ডটি প্রতিস্থাপন করুন ডাটাবেসে আপনি যেটি ব্যবহার করেন তার জন্য, যেহেতু একটি ডিফল্ট বা একটি স্থানধারক প্রায়শই প্রদর্শিত হয়।

এই তথ্য দিয়ে, আপনাকে আপনার Laravel প্রজেক্টের .env ফাইলে যেতে হবে এবং DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, এবং DB_PASSWORD ভেরিয়েবল আপডেট করতে হবে, অথবা যদি আপনি সম্পূর্ণ স্ট্রিং ফর্ম্যাট ব্যবহার করতে চান তবে DATABASE_URL ভেরিয়েবল কনফিগার করতে হবে। লক্ষ্য হল সবকিছু নির্দেশ করা সুপাবেস পোস্টগ্রেস ক্লাস্টার এবং আপনার লোকালহোস্টে নয়।

লারাভেলে পোস্টগ্রেস ড্রাইভার এবং সুপাবেস স্কিমা কনফিগার করুন

লারাভেলে, ডাটাবেস কনফিগারেশনের মূল ফাইল হল কনফিগার/ডাটাবেস.পিএইচপিযদিও আপনি ফ্রেমওয়ার্কের সাথে আসা pgsql ড্রাইভারটি সরাসরি ব্যবহার করতে পারেন, Supabase এর সাথে কাজ করার সময় কিছু অতিরিক্ত সমন্বয় প্রয়োগ করা সাধারণ, বিশেষ করে স্কিমা এবং Postgres-নির্দিষ্ট বিকল্পগুলির ক্ষেত্রে।

লারাভেলে পোস্টগ্রেসের জন্য একটি সাধারণ কনফিগারেশন এইরকম দেখতে হতে পারে, সংযোগ অ্যারের মধ্যে, কী-এর নীচে 'পিজিএসকিউএল':

'pgsql' => ,

এখানে মূল কথাটি প্যারামিটারে রয়েছে অনুসন্ধান_পথSupabase, ডিফল্টরূপে, পাবলিক স্কিমা ব্যবহার করে, যা তার API গুলির মাধ্যমে প্রকাশিত হয়। আপনি যদি আপনার Laravel অ্যাপ্লিকেশনটিকে সেই স্কিমা থেকে আলাদা রাখতে চান এবং টেবিল বা নীতিগত দ্বন্দ্ব এড়াতে চান, তাহলে search_path কে আপনার নিজস্ব স্কিমায় পরিবর্তন করার জন্য অত্যন্ত পরামর্শ দেওয়া হচ্ছে। Laravel, যেমনটি আগের উদাহরণে দেখা গেছে।

এইভাবে, আপনার প্রকল্প দ্বারা তৈরি মাইগ্রেশন এবং টেবিলগুলি জনসাধারণের জন্য নয় বরং সেই বিকল্প স্কিমাতে তৈরি করা হবে। এই পৃথকীকরণ ব্যবস্থাপনাকে অনেক সহজ করে তোলে। নিরাপত্তা নিয়ম, RLS এবং Supabase প্যানেল থেকে অ্যাক্সেস আপনার যা করা উচিত নয় এমন কিছুতে পা না রেখে এবং ডাটাবেস কাঠামো সুসংগঠিত রেখে।

  কোবল প্রোগ্রামিং ভাষা: একটি সম্পূর্ণ সারসংক্ষেপ

কনফিগারেশন ফাইলটি সামঞ্জস্য করার পরে, আপনি সাধারণ Laravel কমান্ড ব্যবহার করে মাইগ্রেশন শুরু করতে পারেন। এটি প্রমাণীকরণ টেবিল এবং আপনার দ্বারা সংজ্ঞায়িত অন্য যেকোনো টেবিল তৈরি করবে। যদি সবকিছু সঠিকভাবে কনফিগার করা থাকে, তাহলে কমান্ডগুলি এর বিপরীতে চলবে। সুপাবেস পোস্টগ্রেস তোমাকে আর কিছু করতে হবে না।

মাইগ্রেশন সম্পন্ন হওয়ার পর, `artisan serve` দিয়ে ডেভেলপমেন্ট সার্ভারটি শুরু করুন এবং ব্যবহারকারীদের নিবন্ধন এবং লগ ইন করার চেষ্টা করুন। যদি কোনও সংযোগ বা মাইগ্রেশন ত্রুটি না দেখা যায়, তাহলে এর অর্থ হল Laravel কাজ করছে। সুপাবেসের সাথে সঠিকভাবে যোগাযোগ করা এবং তুমি পারো আপনার ব্যবসায়িক যুক্তি তৈরি করা চালিয়ে যান সাধারণত

লারাভেলে একটি নির্দিষ্ট সুপাবেস ড্রাইভার ব্যবহার করা

যদিও স্ট্যান্ডার্ড pgsql ড্রাইভার কাজ করে, একটি প্যাকেজ আছে যা একটি যোগ করে লারাভেলের জন্য সুপাবেস ডাটাবেস ড্রাইভার, PostgreSQL-এর আচরণকে খুব কার্যকর উন্নতির সাথে প্রসারিত করা, বিশেষ করে UUID কলাম পরিচালনা এবং কোয়েরি তৈরির পদ্ধতি সম্পর্কে।

এই প্যাকেজটি, prahsys/laravel-supabase হিসাবে বিতরণ করা হয়েছে, Composer এর মাধ্যমে ইনস্টল করা হয়েছে এবং supabase নামক একটি অতিরিক্ত ড্রাইভার নিবন্ধন করে যা আপনি আপনার config/database.php ফাইলে ব্যবহার করতে পারেন। অভ্যন্তরীণভাবে, এটি Laravel এর Postgres ড্রাইভারের উপর ভিত্তি করে তৈরি, তবে এতে অন্তর্ভুক্ত রয়েছে সেটিংস এবং লুকআপ ব্যাকরণ নির্দিষ্ট Supabase পরিবেশের জন্য অপ্টিমাইজ করা।

একবার ইনস্টল হয়ে গেলে, আপনি এর মধ্যে নিম্নলিখিতগুলির মতো কিছু ঘোষণা করতে পারেন সংযোগ বিভাগ:

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

এই ড্রাইভারটি ব্যবহারের সুবিধা হল যে আপনি এখনও পোস্টগ্রেস ইঞ্জিনের সমস্ত শক্তি পাবেন, তবে এটি স্বয়ংক্রিয়ভাবে সুপাবেসের কিছু সূক্ষ্ম বিবরণ পরিচালনা করে, বিশেষ করে যখন এর সাথে কাজ করা হয় প্রাথমিক কী বা সম্পর্ক ক্ষেত্র হিসেবে UUID গুলিএটি প্রতিটি জটিল প্রশ্নের জন্য ম্যানুয়ালি কাস্টিং লেখা এড়ায়।

প্যাকেজটি ফ্রেমওয়ার্ক এবং পিএইচপির আধুনিক সংস্করণগুলির সাথে ভালভাবে মানানসইভাবে ডিজাইন করা হয়েছে, যা এর সাথে অফিসিয়াল সামঞ্জস্যতা প্রদান করে লারাভেল ১০.x, ১১.x, ১২.x এবং ৮.১ সংস্করণ থেকে পিএইচপি সহ, সেইসাথে যেকোনো স্ট্যান্ডার্ড পোস্টগ্রেএসকিউএল ডাটাবেস, অবশ্যই সুপাবেস সহ।

সবকিছু সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য, প্যাকেজটিতে স্বয়ংক্রিয় পরীক্ষার একটি স্যুট অন্তর্ভুক্ত রয়েছে। আপনি `composer test` কমান্ড দিয়ে পরীক্ষাগুলি চালাতে পারেন, যা গতির জন্য একটি ইন-মেমরি SQLite ডাটাবেস ব্যবহার করবে, অথবা আপনার Supabase-এর দিকে নির্দেশ করে একটি `.env.testing` ফাইল প্রস্তুত করুন এবং বাস্তব-বিশ্বের পরিবেশে আচরণ যাচাই করতে `composer test-supabase` চালান। রিমোট পোস্টগ্রেস.

সুপাবেস এবং লারাভেলে UUID ব্যবস্থাপনা

UUID কলামের সাথে Supabase-এর একটি বিশেষত্ব রয়েছে: যদি আপনি কাস্ট না করেই একটি টেক্সট স্ট্রিংয়ের সাথে সরাসরি একটি UUID তুলনা করার চেষ্টা করেন, তাহলে কোয়েরিটি হতে পারে ব্যর্থ অথবা অপ্রত্যাশিত ফলাফল প্রদানএকটি "প্লেইন" পোস্টগ্রেস সিস্টেমে আপনি গ্লোবাল কাস্ট বা কাস্টম অপারেটর দিয়ে এটি সমাধান করতে পারেন, কিন্তু সুপাবেসে এই গ্লোবাল কাস্টমাইজেশন অনুমোদিত নয়।

এটি বোঝাচ্ছে স্টাইলের সরাসরি অনুসন্ধানের চেয়ে:

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

এটা কাজ করবে না। যেমনটা তুমি আশা করবে। তবে, যদি তুমি স্পষ্ট কাস্টিং পরিচালনা করো:

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

কোয়েরিটি সফল। সমস্যা হলো লারাভেলে, যখন আপনি Eloquent অথবা কোয়েরি বিল্ডার দিয়ে কোয়েরি লেখেন, তখন আপনি যেতে চান না। প্রতিটি জায়গায় CAST বসানোএখানেই উপরে উল্লিখিত প্যাকেজের সুপাবেস ড্রাইভারটি কাজ করে, যা আপনার জন্য সেই কাস্টগুলি যোগ করার যত্ন নেয়।

সেই ড্রাইভারটি সক্রিয় থাকলে, আপনি সম্পাদন করতে পারবেন সাধারণ প্রশ্ন যেমন:

$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', '[email protected]')
    ->get();

চালক প্রয়োগের জন্য দায়ী টেক্সট করার জন্য প্রয়োজনীয় কাস্ট প্রাসঙ্গিক UUID কলামে, স্বচ্ছভাবে। এইভাবে, আপনার কোড Laravel-এর জন্য বাকপটু থাকবে, এবং আপনাকে raw SQL লিখতে হবে না বা প্রতিটি জটিল কোয়েরিতে অদ্ভুত কৌশল ব্যবহার করতে হবে না।

  কাস্টম সফটওয়্যার ডেভেলপমেন্টের সুবিধা

কোন কলামগুলিকে UUID হিসেবে বিবেচনা করা হবে তার উপর যদি আপনি আরও সূক্ষ্ম নিয়ন্ত্রণ চান, তাহলে প্যাকেজটি বৈশিষ্ট্যটি অফার করে কাস্টসইউইউআইডিকলাম আপনার Eloquent মডেলের জন্য। কেবল মডেল ক্লাসে এটি ব্যবহার করুন এবং অতিরিক্ত কলামের একটি সুরক্ষিত অ্যারে সংজ্ঞায়িত করুন:

use Prahsys\Supabase\Traits\CastsUuidColumns;

class Post extends Model
{
    use CastsUuidColumns;

    protected $uuidColumns = ;
}

এই বৈশিষ্ট্যটি তিনটি গুরুত্বপূর্ণ কাজ করে: এটি ডিফল্টরূপে UUID হিসেবে প্রাথমিক কী অন্তর্ভুক্ত করে এবং এটি সম্পত্তিতে আপনার ঘোষিত যেকোনো কলাম যোগ করে। $uuidকলাম এবং সেই তথ্য কোয়েরি বিল্ডারের কাছে পৌঁছে দেয় যাতে এটি জানতে পারে কাস্টগুলি কোথায় প্রয়োগ করতে হবে। সুতরাং, 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 স্টোরেজকে config/filesystems.php এর মধ্যে অন্য একটি ড্রাইভার হিসাবে বিবেচনা করার অনুমতি দেয়।

প্রশ্নবিদ্ধ প্যাকেজটিতে একটি ফ্লাইসিস্টেম অ্যাডাপ্টার রয়েছে যা ফ্রেমওয়ার্কের স্টোরেজ সিস্টেমের সাথে স্বচ্ছভাবে সংহত হয়। এটি ন্যূনতম প্রয়োজনীয়তা পূরণ করে পিএইচপি >= ৮.১, লারাভেল ১০.x অথবা ১১.x এবং PHP ফাইলইনফো এক্সটেনশন (ext-fileinfo), যা Laravel ইতিমধ্যেই ফাইল পরিচালনার জন্য সুপারিশ করেছে। কম্পোজার দিয়ে ইনস্টলেশন সম্পন্ন করা হয়, এবং একবার অন্তর্ভুক্ত করার পরে, আপনাকে কেবল কনফিগারেশনে সুপাবেস ডিস্ক সংজ্ঞায়িত করতে হবে।

ফাইলটিতে কনফিগ/ফাইলসিস্টেমস.পিএইচপিঅ্যারে ডিস্কের মধ্যে, আপনি নিম্নলিখিতগুলির মতো কিছু যুক্ত করবেন:

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

বাকেট প্যারামিটারটি সাধারণত সহজভাবে হয় স্টোরেজ বাকেটের নাম যা আপনি Supabase প্যানেলে তৈরি করেছেন (উদাহরণস্বরূপ, myapp-file-uploads)। এন্ডপয়েন্ট হল প্রকল্পের স্টোরেজ পরিষেবার বেস URL, যা প্যানেলের সংশ্লিষ্ট বিভাগেও দৃশ্যমান এবং সাধারণত প্রকল্পের URL এবং অঞ্চল থেকে নেওয়া হয়।

``public` বিকল্পটি নির্দেশ করে যে বাকেটের বিষয়বস্তু ডিফল্টরূপে সর্বজনীন হিসেবে বিবেচিত হবে কিনা। ``true` হলে, অ্যাডাপ্টারটি বিশেষ স্বাক্ষর ছাড়াই অ্যাক্সেসযোগ্য URL তৈরি করবে; ``false` হলে, ``defaultUrlGeneration` বিকল্পটি কার্যকর হবে, যা ``signedUrlExpires` দ্বারা নির্দিষ্ট মেয়াদোত্তীর্ণ সময়ের সাথে স্বাক্ষরিত URL তৈরি করতে বাধ্য করতে পারে। এই কনফিগারেশন আপনাকে লোড ভারসাম্য বজায় রাখতে দেয়। নিরাপত্তা এবং আরাম আপনার পরিচালনা করা ফাইলের ধরণের উপর নির্ভর করে।

সাধারণ ডিস্ক URL সাধারণত নাল হিসেবে রাখা হয় যাতে অ্যাডাপ্টারটি স্বয়ংক্রিয়ভাবে এটিকে এন্ডপয়েন্ট থেকে বের করে নেয়। আপনি যদি একটি ব্যবহার করেন তবেই এটি স্পর্শ করা উচিত প্রক্সি বা মধ্যবর্তী CDN এবং আপনি চান যে উৎপন্ন রুটগুলি স্থানীয় সুপাবেস ডোমেনের পরিবর্তে সেই ডোমেনের দিকে নির্দেশ করুক।

আপলোড ত্রুটির সমস্যা সমাধান করুন এবং Supabase স্টোরেজের মূলনীতিটি বুঝুন

Laravel থেকে Supabase স্টোরেজে ফাইল আপলোড করার সময় একটি মোটামুটি সাধারণ সমস্যা হল এই ধরনের বার্তা পাওয়া "স্থানে ফাইল লেখা সম্ভব হচ্ছে না: আপলোড/..."এটি সাধারণত ইঙ্গিত দেয় যে, ড্রাইভারটি কনফিগার করা থাকলেও, অপর্যাপ্ত অনুমতি বা ভুল কনফিগার করা কী-এর কারণে Supabase লেখার কাজটি অস্বীকার করছে।

config/filesystems.php এর supabase ডিস্কে, কনফিগারেশনে ব্যবহার করার কথা উল্লেখ করা হয়েছে একটি "বিশেষাধিকারপ্রাপ্ত চাবি" কী ক্ষেত্রে, স্পষ্টভাবে উল্লেখ করে যে একটি পঠনযোগ্য কী কাজ করবে না। এর অর্থ হল আপনাকে এমন একটি পরিষেবা কী ব্যবহার করতে হবে যার বাকেটটিতে লেখার অনুমতি রয়েছে, কেবল ক্লায়েন্টের জন্য তৈরি একটি পাবলিক API কী বা পরিবর্তনের অনুমতি ছাড়াই S3 সামঞ্জস্যের জন্য তৈরি একটি কী নয়।

Supabase প্যানেলে, API এবং স্টোরেজ কনফিগারেশন বিভাগের মধ্যে, আপনি বেনামী কী এবং পরিষেবা_ভূমিকা বা সমতুল্যএগুলো হলো সেইসব কী যাদের বর্ধিত সুবিধা আছে। এটি সেই সার্ভিস কী, পাবলিক কী নয়, যা আপনার SUPABASE_SECRET_ACCESS_KEY ভেরিয়েবলে রাখা উচিত, যা ড্রাইভার তারপর env('SUPABASE_SECRET_ACCESS_KEY') এর মাধ্যমে পড়বে।

  ব্যবসায়িক জগতে ডাটাবেসের গুরুত্ব

যদি আপনি স্টোরেজ কনফিগারেশন থেকে S3 কী বা প্রকল্পের জেনেরিক API কী দিয়ে পরীক্ষা করে থাকেন, তাহলে খুব সম্ভবত সেই শংসাপত্রগুলির নির্দিষ্ট বাকেটে লেখার অনুমতি নেই, যার ফলে লেখার ত্রুটি দেখা দেয়। কী মানকে a তে পরিবর্তন করা হচ্ছে লেখার অনুমতি সহ বৈধ পরিষেবা কী এবং বালতিটি বিদ্যমান এবং সঠিকভাবে লেখা আছে তা নিশ্চিত করার মাধ্যমে, সমস্যাটি সাধারণত সমাধান করা হয়।

কী ছাড়াও, এটি যাচাই করা গুরুত্বপূর্ণ যে SUPABASE_STORAGE_BUCKET-এ সংজ্ঞায়িত বাকেটটি Supabase ইন্টারফেসে তৈরি বাকেটের সাথে হুবহু মিলে যায়, বড় হাতের এবং ছোট হাতের অক্ষরের ক্ষেত্রে, এবং শেষ বিন্দুটি সেই স্টোরেজ ইনস্ট্যান্সের জন্য সঠিক URL-এর সাথে মিলে যায়। অতিরিক্ত অক্ষর বা ভুল ডোমেনের মতো কোনও বিবরণ অ্যাডাপ্টারটিকে কাজ করতে বাধা দিতে পারে। ফাইলগুলির আসল গন্তব্যস্থল সনাক্ত করুন.

লারাভেল ব্রীজ, ব্লেড এবং সুপাবেস স্টোরেজ সহ কর্মপ্রবাহ

একবার আপনার ডাটাবেস এবং স্টোরেজ সেট আপ হয়ে গেলে, পরবর্তী স্বাভাবিক পদক্ষেপ হল আপনার সাথে সবকিছু একীভূত করা লারাভেল ব্রীজ ইন্টারফেস এবং ব্লেড টেমপ্লেটএইভাবে, ব্যবহারকারীরা লারাভেল ইকোসিস্টেম ছেড়ে না গিয়েই Supabase-এ ফাইল নিবন্ধন, প্রমাণীকরণ এবং আপলোড করতে পারবেন।

আপনার কন্ট্রোলারের মধ্যে, আপনি ব্যবহার করবেন স্টোরেজ সম্মুখভাগ supabase ডিস্কের দিকে নির্দেশ করা হচ্ছে। উদাহরণস্বরূপ, একটি ফর্ম থেকে প্রাপ্ত একটি ফাইল আপলোড করার জন্য একটি ফাইল ইনপুট সহ, আপনি এরকম কিছু করতে পারেন:

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

এই কোডটি লারাভেলকে ডিস্ক ব্যবহার করতে বলে। supabase এবং ফাইলটি কনফিগার করা বাকেটের মধ্যে ভার্চুয়াল আপলোড ফোল্ডারের ভিতরে রাখুন। যদি কী এবং এন্ডপয়েন্ট সঠিক হয়, তাহলে ফাইলটি Supabase স্টোরেজে আপলোড করা হবে এবং আপনি স্ট্যান্ডার্ড স্টোরেজ পদ্ধতি ব্যবহার করে এর পাথ পুনরুদ্ধার করতে পারবেন অথবা পাবলিক বা স্বাক্ষরিত URL তৈরি করতে পারবেন।

এই পদ্ধতির সুবিধা হল যে আপনার অ্যাপ্লিকেশনটি স্থানীয় ডিস্ক, অ্যামাজন S3, সুপাবেস, বা অন্য কোনও সমর্থিত পরিষেবা ব্যবহার করুক না কেন, স্টোরেজের জন্য একটি একক ইন্টারফেস বজায় রাখে। সরবরাহকারীদের স্যুইচিং হ্রাস করা হয় config/filesystems.php সামঞ্জস্য করুন এবং পরিবেশগত পরিবর্তনশীল, ব্যবসায়িক যুক্তি স্পর্শ না করে।

ব্লেড এবং ব্রিজের সাথে এটি একত্রিত করে, আপনি আপনার অ্যাপ্লিকেশনের ব্যবহারকারীর অভিজ্ঞতার সাথে সম্পূর্ণরূপে একত্রিত আপলোড ফর্ম, ফাইল তালিকা এবং ডাউনলোড লিঙ্ক অফার করতে পারেন। তদুপরি, সুপাবেস স্টোরেজের বাকেট- এবং নীতি-ভিত্তিক পদ্ধতি আপনাকে এর সুবিধাগুলি ব্যবহার করতে দেয় অ্যাক্সেস নিয়ন্ত্রণ এবং নিরাপত্তা নিয়ম প্রতিটি ব্যবহারকারী কী দেখতে বা ডাউনলোড করতে পারবেন তা নির্ধারণ করতে।

প্যাকেজ, ড্রাইভার এবং কনফিগারেশনের এই সম্পূর্ণ ইকোসিস্টেমটি লারাভেলকে সুপাবেসের সাথে খুব আরামে কাজ করতে দেয়, পোস্টগ্রেসের সাথে রিলেশনাল ডেটা দিক এবং... উভয় ক্ষেত্রেই। ফাইল স্টোরেজ এবং UUID ব্যবস্থাপনাকী, স্কিমা এবং ড্রাইভার সঠিকভাবে সামঞ্জস্য করার মাধ্যমে, আপনি একটি খুব দৃঢ় ইন্টিগ্রেশন অর্জন করেন যা ম্যানুয়ালি এবং এই স্তরগুলির সহায়তা ছাড়াই উভয় প্ল্যাটফর্ম সংযোগ করার সময় ঘটে যাওয়া অনেক সাধারণ ত্রুটি এড়ায়।

ডাটাবেস এবং স্টোরেজের জন্য লারাভেলকে সুপাবেসের সাথে সংযুক্ত করা, UUID গুলি নির্বিঘ্নে পরিচালনা করার জন্য ডেডিকেটেড সুপাবেস ড্রাইভার ব্যবহার করা এবং স্টোরেজের জন্য ফ্লাইসিস্টেম অ্যাডাপ্টার ব্যবহার আপনাকে আধুনিক অ্যাপ্লিকেশন তৈরি করতে দেয় যেখানে সম্পূর্ণ জটিল অবকাঠামোটি ক্যাপসুলেটেড লারাভেলের ক্লিন এপিআই-এর পর্দার আড়ালে, মাইগ্রেশন এবং প্রমাণীকরণ থেকে শুরু করে ফাইল আপলোড করা এবং সুরক্ষিত বাকেট পর্যন্ত।

লারাভেলে ব্লেড হ্যাস্ট্যাক নির্দেশিকা
সম্পর্কিত নিবন্ধ:
ব্লেড ডিরেক্টিভিটিতে লারাভেলে স্ট্যাক এবং অ্যাডভান্সড স্ট্যাক কন্ট্রোল রয়েছে।