راکت
حل شده

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

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۷۶

ثبت پرسش جدید

پاسخ‌ها

2
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

سلام
حستون درسته و علتش پیدا نکردن ستون مربوط به‌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
NESYOU
@nesyourys

تخصص: توسعه دهنده بک اند

سلام
@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: []

}

شاید پاسخ شما همین‌جا باشد

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

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