NESYOU
4 سال پیش توسط NESYOU مطرح شد
2 پاسخ

ارور در ریلیشن بین خبر و دسته بندی

سلام شبتون بخیر
من ی مدل news دارم و ی مدل newsCategory
بخاطر اینکه من برای محصولات فروشگاهم دسته بندی لازم داشتمم مجبور شدم به شکل بالا عمل کنم اگ شما راه حل بهتری داشتید خوش حال میشم بشنوم
ولی توی ریلیشنی ک زدم ی مشکلی دارم
News.php

    public function category(){
        return $this->belongsTo(NewsCategory::class);
    }

newsCategory.php

    public function news(){
        return $this->hasMany(News::class);
    }

ارور

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'news.news_category_id' in 'where clause' (SQL: select * from news where news.news_category_id = 5 and news.news_category_id is not null)

از شما @mhyeganeh
قبلا https://roocket.ir/discuss/14889 این سوال رو پرسیدم ولی اینجا رعایت کردم حس میکنم مشکل بخاطر نام گزاریم باشه
@ali.bayat
@hesammousavi
@Rp۷۶


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش آپدیت شد
1

سلام
حستون درسته و علتش پیدا نکردن ستون مربوط به‌Foreign Key در جدول news هست.
دقت کنید که طبق ساختار و نام گذاری هایی که شما طراحی کردید و مطابق با قوانین پیش فرض لاراول، جدول news باید یک فیلد داشته باشه با عنوان news_category_id که نقش رابط با جدول news_categoeries رو ایفا کنه.

اگر هم نام گذاری هاتون متفاوت هست یک راه دیگه اش این هست که در هنگام تعریف روابط در متدها، اسم این فیلد رو بعنوان پارامتر دوم وارد کنید تا جایگزین قانون پیش فرض خود لاراول بشه. اینجوری:

public function category() {
    return $this->belongsTo(NewsCategory::class, 'your_FK_custom_name');
}   
public function news() {
    return $this->hasMany(News::class, 'your_FK_custom_name');
}

NESYOU
تخصص : توسعه دهنده بک اند
@nesyourys 4 سال پیش آپدیت شد
0

سلام
@mhyeganeh
وقتی به شکل زیر تغییر دادم کدو

{{  $new->category->title }}

از این توی ویو ارور گرفت
Attempt to read property "title" on null

News

    public function category(){
        return $this->belongsTo(NewsCategory::class,'id');
    }

newsCategory

    public function news(){
        return $this->hasMany(News::class,'category_id');
    }

وقتی هم برعکس کردم خروجی نمیده
news

     public function category(){
        return $this->belongsTo(NewsCategory::class,'category_id');
    }

newsCategory

     public function news(){
        return $this->hasMany(News::class,'id');
    }
 $news= $newsCategory->news()->get();

Illuminate\Database\Eloquent\Collection {#387 ▼

items: []

}


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

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