چگونه کاربری که ثبت نام کرده یک بار سفارش را انتخاب کنه؟
https://lamtakam.com/qanda/2406/چگونه-کاربری-که-ثبت-نام-کرده-یک-بار-سفارش-را-انتخاب-کنه؟ 0کاربر میاد تو سایت ثبت نام میکنه که میخواد سفارش را انتخاب کنه فقط کاربر بتونه یک بار سفارش را انتخاب کنه.
دو بار اگر زد پیغام بده که شما قبلا این سفارش را به ثبت رساندی.
public function up()
{
Schema::create('orders', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
$table->bigInteger('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->bigInteger('computer_id')->unsigned()->nullable();
$table->foreign('computer_id')->references('id')->on('computers')->onDelete('cascade');
$table->boolean('status')->nullable();
$table->timestamps();
});
}
User.php
public function checkOrder($category)
{
return !! Order::where('user_id' , $this->id)->where('category_id' , $category->id)->first();
}
OrderControllrt.php
public function store(Request $request)
{
$this->validate(request(), [
'category_id' => 'required'
]);
$order = Order::findOrFail(request('category_id'));
if(auth()->user()->checkOrder($order)) {
alert()->error('شما قبلا این سفارش را انجام داده اید.','دقت کنید')->persistent('خیلی خوب');
return redirect()->back();
}
عنوان سوالت رو بخون، متوجه ميشي خودت؟! براي من كه مبهمه! ــ سعید مرادی در 5 سال قبل | |||
اوه اصلا حواسم بهش نبود خودم هم خنده ام گرفته بود ــ Mahmoud Khosravi در 5 سال قبل | |||
1 | یک چیزی که به سوال شما هم مرتبط نیست، کنجکاو شدم که آیا میدونی اون دوتا علامت سوال !! که بعد از return گذاشتی دقیقا برای چیه؟ از جایی برداشتی یا از قصد نوشتی و دلیلش رو دقیقا میدونی؟ ــ سجاد شفی زاده |
||
@سجاد.شفی.زاده.★ یعنی وجود داشته باشه true ولی اگر وجود نداشنه باشد false . از یه فیلم آموزش استفاده میکنم ــ Mahmoud Khosravi در 5 سال قبل |
|||
1 | خب، نه :-) .. اون دوتا علامت تعجب برای چیز دیگه ای اونجان. در واقع اون یک ترفند هست توی PHP که تابع رو مجبور میکنی که حتما یک مقدار از نوع boolean برگردونه. (نه مثلا string یا int یا ...) ــ سجاد شفی زاده |
||
خب دارم همیم را می گم که اگر وجود داشته باشه true ولی اگر وجود نداشنه باشه false ــ Mahmoud Khosravi در 5 سال قبل |
|||
1 | من سوالتون رو کامل مطالعه نکردم، ولی اینو میدونم که زمانی که در یک سیستم فروشگاهی، قصد دارید هر سفارش فقط 1 بار ثبت بشه، یعنی به عبارتی میخواید یک سطر با ویژگی های مشخص (که بیانگر 1 سفارش هستند) یک بار فقط در جدول وجود داشته باشه، باید از ایندکس unique استفاده کنید. طرز استفادش حتی میتونه به صورت ترکیبی از چند تا ستون هم باشه. مثلا همچین چیزی ALTER TABLE orders ADD UNIQUE unique_index(category_id , user_id, computer_id); ــ ساناز رضایی در 5 سال قبل |
||
ممنون درست شد ــ Mahmoud Khosravi در 5 سال قبل |