نوشته شده توسط
plague
تیبل های پست و کتگوری اصلا به هم مرتبطس نیستن به شکل مستقیم که شما براشن رابطه نوشتی
شما باید اول تیبل post رو وصل کنی به تیبل category_post و بعد category_post رو وصل کنی به category
توی مدل post
function CategoryPost(){
return $this->hasMany('App\CategoryPost');
}
بعد کوئریش میشه
$category_ids = [1,2,3];
Post::whereHas('CategoryPost' , function($q) use ($category_ids) {
return $q->whereIn('category_id' , $category_ids );
})-get();
ببین کدی که من نوشتم مشکلی نداره و تو tinker به درستی جواب می ده. چون لاراول یک سری قرارداد داره که نیازی نیست به طور صریح جداول رو به هم مرتبط کنی(تو رابطه های many2may) .در ضمن من تو مدل post رابطه تعریف کردم دیگه!.
public function category(){return $this->belongsToMany(Category::class);}
من کد زیر رو تو کنترلر نوشتم:
public function show($cat)
{
$category=category::with('posts')->where('title','=','پادکست')->get();
return view('Posts.show',compact('category'));
}
با کد زیر تو ویو می خوام از طریق رابطه ای که category با post داره، عنوان پست به علاوه عنوان دسته بندی پست و نویسنده و ..و را مثل زیر نمایش بدم:
@foreach($category as $cat)
<p>{{$cat->posts->title}}
@endforeach
اما موقع اجرا میگه که title رو نمیشناسم