امین
9 ماه پیش توسط امین مطرح شد
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 9 ماه پیش آپدیت شد
0

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

$table->id();

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


امین
@safaeiiam 9 ماه پیش مطرح شد
0

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

 تصویر


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

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

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

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


امین
@safaeiiam 9 ماه پیش آپدیت شد
0

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

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

امین
@safaeiiam 8 ماه پیش مطرح شد
0

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


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

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

dd($request->all());

امین
@safaeiiam 8 ماه پیش آپدیت شد
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 8 ماه پیش مطرح شد
0

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

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

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


امین
@safaeiiam 8 ماه پیش آپدیت شد
0

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

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


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

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

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

امین
@safaeiiam 8 ماه پیش مطرح شد
0

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


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

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


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

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


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

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