سلام وقتی من با متد استور اطلاعات راcreate میکنم به خطای زیر میخورم
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'article_id' in 'field list' (SQL: insert into article_category (article_id
, category_id
) values (3, 1))
اینم متد استورم
public function store(Request $request)
{
$messages = [
'name.required' => 'فیلد نام را وارد نمایید',
'slug.required' => 'نام مستعار دسته بندی را وارد نمایید',
'slug.unique' => 'فیلد نام مستعار تکراری است.عنوان را عوض کنید',
'user_id.unique'=>'فیلد نام را وارد نمایید'
];
$validatedData = $request->validate([
'name' => 'required',
'slug' => 'required|unique:articles,slug,',
'user_id' => 'required',
], $messages);
$article = new Article;
$article = $article->create($request->all());
$article->categories()->attach($request->categories);
$msg = "ذخیره ی دسته بندی جدید با موفقیت انجام شد";
return redirect(route('admin.articles'))->with('success', $msg);
}
بله اشتباه تایپی دارید در کد ارسالیتون از migration! 😐
Schema::create('article_category', function (Blueprint $table) {
$table->id();
$table->integer('article-id');
//باید بشه:
$table->integer('article_id');
$table->integer('category_id');
});
لاراول بر اساس نام گذاری ها و متدهای Relation شما میگرده دنبال جدول ها و فیلدهایی که با یک پترن مشخص باید وجود داشته باشند.
مثلا اگر رابطه بین Article و Category تون رو از نوع Many-to-Many در نظر گرفته اید (که منطقا هم باید همین طور باشه):
article_category
article_id
و category_id
حالا با این توضیحات، ارور شما به صورت مشخص داره میگه:
SQLSTATE[۴۲S۲۲]: Column not found: ۱۰۵۴ Unknown column 'article_id' in 'field list' (SQL: insert into article_category (article_id, category_id) values (۳, ۱)
یعنی در جدول articlecategory ستونی با عنوان articleid پیدا نکردم! بررسی کنید علتش چیه و اصلاحات رو اعمال کنید.
پینوشت: چنانچه به هر دلیلی قصد تبعیت از الگوهای نام گذاری پیش فرض لاراول رو نداشتید هم مشکلی نیست. تنها کافیه موقع تعریف متد Relation مربوطه در مدل ها اسم جدول و فیلدهای کاستوم خودتون رو هم بهش بدید تا از این به بعد با اون عناوین سراغ دیتابیس بره و دنبالشون بگرده...
مثلا:
return $this->belongsToMany(Article::class, 'article_category', 'category_id', 'article_id');
@mhyeganeh
من همه این هایی که گفتین را رعایت کردم هم جدول واسط و هم درونش دو تا ستونهcategory_id و article_id قرار دادم اما مشکل داره
public function articles(){
return $this->belongsToMany(Article::class);
}
این جدول واسط
جاییش اشتباهه؟؟
" Schema::create('article_category', function (Blueprint $table) {
$table->id();
$table->integer('article-id');
$table->integer('category_id');
});"
بله اشتباه تایپی دارید در کد ارسالیتون از migration! 😐
Schema::create('article_category', function (Blueprint $table) {
$table->id();
$table->integer('article-id');
//باید بشه:
$table->integer('article_id');
$table->integer('category_id');
});
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟