امین
1 سال پیش توسط امین مطرح شد
13 پاسخ

خطای 42S22 هنگام ذخیره مطلب

با سلام
هنگام ذخیره مطلب با خطای 42s22 مواجه میشم
لاراول 10 کار میکنم و یک جدول pvot دارم که همزمان می خوام هم مطلب ذخیره بشه و هم اطلاعات در جدول pvot
ممنون میشم راهنمایی کنید
 تصویر
کد کنترلر

public function create()
    {
        $categories= category::all()->pluck("name","id");
        $page_title="فرم ایجاد مطلب";
        return view('back.articles.create', compact("page_title","categories"));
    }
    public function store(Request $request)
    {
        $messages= [
            'name.required' => 'لطفاً نام مطلب را وارد نمایید' ,
            'slug.required' =>'لطفاً نام مستعار مطلب را وارد نمایید'  ,
            'slug.unique' => 'نام مستعار مطلب تکراری است' ,
            'description.required' => 'لطفاً محتوای مطلب را وارد نمایید' ,
            'status.required' => 'لطفاً وضعیت مطلب را وارد نمایید' ,
        ];
        $validated = $request->validate([
            'name' => 'required',
            'slug' => 'required|unique:categories' ,
            'description' => 'required' ,
            'status' => 'required'
        ] , $messages);
        $article=new Article;
        try{
            $article=$article->create($request->all());
            $article->categories()->attach($request->categories);
        }catch(Exception $exception){
            return redirect(route('admin.articles.create')) -> with('warning' , $exception->getCode());
        }

        $msg="مطلب جدید با موفقیت ذخیره گردید";
        return redirect(route('admin.articles')) -> with('success' , $msg);
    }

کد مادل های article , category

class category extends Model
{
    use HasFactory;
    protected $fillable=['name','slug'];
    public function atricles()
    {
        return $this->belongsToMany(Article::class );
    }
}
class Article extends Model
{
    use HasFactory;
    protected $fillable=['name','slug','description','user_id','status'];
    protected $attributes=['hit=>1'];
    public function categories()
    {
        return $this->belongsToMany(Category::class);
    }
}

کد جدول

public function up(): void  
{  
Schema::create('articles', function (Blueprint $table) {

        $table->id();
        $table->string('name');
        $table->string('slug')->unique();
        $table->text('description');
        $table->integer('user_id');
        $table->integer('hit');
        $table->tinyInteger('status');
        $table->timestamps();
    });
}

ثبت پرسش جدید
میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش آپدیت شد
0

سلام دوست عزیز
من مشکلتون رو متوجه شدم ببینید برید توی phpmyadmin و دیتابیس رو چک کنید جدول articles ایدی رو چک کنید ببینید auto increment فعال هست یا نه یا اگه نمیدونید یک اسکرین شات بگیرید بفرستید ولی کنارش باید یه دونه کلید زرد رنگ باشه کنار ایدی اگه اون باشه که هیچی مشکل از کد نویسیه اما اگه نباشه یعنی ایدی جدول articles به صورت خودکار نمیاد بهش اضافه بشه و پر بشه واسه همین اینجا فیلد ایدی رو تعریف نکردی بهت اررور داد که نمیتونی ایدی رو 0 بزاری مگر اینه رفته باشه و کد های لاراول رو دست کاری کرده باشه و اون قسمتی که گفته

$table->id();

رفتی و کد هاشو تغییر دادی و auto increment رو ازش ورداشتی چون ایدی توی مایگریشن ها به صورت پیشفرض قرار داره و auto increment هم براش فعاله


امین
@safaeiiam 1 سال پیش مطرح شد
0

سلام
اینارو چک کردم قبلاً
مشکل از کد هستش

 تصویر


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش آپدیت شد
0

خوب ببین توی این قسمت چه request هایی میفرستی میشه ببینم؟

$article=$article->create($request->all());

اگه میشه یه dd بگیر قبلش ببینم


امین
@safaeiiam 1 سال پیش آپدیت شد
0

به اینصورت dd میزارم بعد از همون دستور ولی بازم همون خطا رو میده

$article=new Article;
        // try{
            $article = $article->create($request->all());
            dd($request);

امین
@safaeiiam 1 سال پیش مطرح شد
0

سلام
کسی نیست راهنمایی کنه؟


میلاد قربانی
تخصص : php laravel
@miladghorbani006 1 سال پیش آپدیت شد
0

dd بالای ایجاد article بذارید و نتیجه بفرستید

dd($request->all());

امین
@safaeiiam 1 سال پیش آپدیت شد
0
array:7 [▼ // app\Http\Controllers\back\ArticleController.php:42
  "_token" => "P0HKu4hONE875iP2JTP3SjvYFgrR3YF9hCcvCm9k"
  "name" => "مطلب1"
  "slug" => "001"
  "description" => "مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1مطلب1 ▶"
  "status" => "1"
  "categories" => array:1 [▼
    0 => "4"
  ]
  "user_id" => "1"
]

میلاد قربانی
تخصص : php laravel
@miladghorbani006 1 سال پیش مطرح شد
0

تو باید برای ایجاد article این موارد بدی به create :

'name','slug','description','user_id','status'

فقط این موارد قرار بده توی create


امین
@safaeiiam 1 سال پیش آپدیت شد
0

به هر شکلی میزنم همون مشکل رو میگیره

میشه لطفاً خط دستورشو کامل بگین
شاید اشتباه میزنم


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 1 سال پیش مطرح شد
0

درود خوبی...
توی مدل article این کد وارد کنید.
به جای $attributes عبارت $appends جایگزین کنید:

protected $appends = [ 'status' , 'hit=>1'];

امین
@safaeiiam 1 سال پیش مطرح شد
0

سلام
ممنون
حل نشد


رایموند
تخصص : مختصص وردپرس - برنامه نویس لار...
@Raymond 1 سال پیش مطرح شد
0

من خودم نمونه پروژه وبلاگ با لاراول نوشتم...
یه سر به کدهای مدل و کنترلر بزن:
https://github.com/OrchidDev/Blog


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش مطرح شد
0

دوست عزیز توی کد نویسی ظاهرا مشکلی نیست یک بار با دستور php artisan migrate:fresh مایگریشن هارو از نو بساز اگه باز نشد حالا اگه خواستی با برنامه anydesk وصل میشم و یه سری تست ها انجام میدم تا مشکل رو پیدا کنم و برطرف کنم ممکنه مشکل از جای دیگه باشه تا تست نویسی انجام نشه شاید مشخص نشه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام