سلام شبتون بخیر
من ی مدل 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۷۶
سلام
حستون درسته و علتش پیدا نکردن ستون مربوط به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');
}
سلام
@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 ▼
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟