یکی از قابلیت های جذاب لاراول ۹ همین forced scope bindings هست که یه جورایی به معنای اتصال اجباری و ... معنی میشه
خب حالا این یعنی چی؟
کسایی که قبلا تجربه توسعه داشتند میدونند که بعضا ما میخوایم در لحظه نمایش پست ها و یا محصولات و یا هر چیز دیگه ای، قبلش چک کنیم که این پست متعلق به یوزر فعلی باشه، یعنی کاربرای دیگه نتونن پست های دیگران رو ببینند.
بیاین توی کد نشونتون بدم
php artisan make:migration create_posts_table
public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->foreignIdFor(\App\Models\User::Class)->constrained()->onDelete('cascade'); $table->string('title'); $table->text('body'); $table->timestamps(); }); }
جالب هست بدونید با foreignIdFor میتونید به راحتی کلید خارجی بسازید و به تیبل مورد نظرتون بایندش کنید.
بریم سراغ وارد کردن دیتا داخل جدول پست ها
توی جدول فوق میبینید که ما ۱۰ تا پست داریم و ۱۰ تا یوزر و هر یوزر یک پست در جدول ما داره - خیلی ساده -
هدف: یوزر شماره ۱ پست اول را بتواند ببیند و پست های دیگر را نتواند ببیند
۲. مرحله بعد تعریف روت route
− حالت قبل از لاراول ۹
توی این حالت تمام پست ها بدون محدودیت قابل نمایش هست
می بینید که توی این حالت با پاس دادن آی دی پست به یو آر ال میتونیم بدون هیچ محدودیتی پست رو ببینینم
− و اما حالت forced scope bindings
شما با این کار حالت force bind رو فعال می کنید و دیگه کاربر شماره ۱ نمیتونه پست شماره ۹ رو ببینه
به همین راحتی (:
در روتر یک راه حل دیگه هم داریم اونم اضافه کردن scopebindings انتهای روتمون هست بدین شکل:
امیدوارم مفید باشه براتون ((:
حمید روحانی