i know this has been asked alot , but none of the solution works for me as i want to use this in the view
i have 3 tables
Languages : id , title
Blog : id
BlogLanguage : blog_id , language_id , title , text
so when i list the blogs in the view , for each blog i want to show what languages has been stores for this Blog
basically i want to do something like this
$blogs = Blog::all();
$languages = Language::all();
return view('blog-index' , compact('blogs' ,'languages));
in the view
@foreach($blogs as $blog )
id : {{$blog->id}}
@foreach($languages as $lang )
{{$lang->title}} : {{ $lang->HasThisBlog($blog->id) ? 'yes' : 'no' }}
@endforeach
@endforeach
here is what im stuck
{{ $lang->HasThisBlog($blog->id) ? 'yes' : 'no' }}
if i can have this relation in the Language model
function HasThisBlog($id){
return $this->hasOne(BlogLanguage::class )->where('blog_id' , $id ) ;
}
of course this doesn't work and gives me some weird object like
HasOne {#706 ▼
#foreignKey: "blog_languages.language_id"
#localKey: "id"
#query: Builder {#705 ▶}
#parent: Language {#560 ▶}
#related: BlogLanguage {#667 ▶}
#withDefault: null
}
You just need to define a relation on you Blog model. As you already have pivot table for the following relationships
Blog belongsToMany Language(s)
Language belongsToMany Blog(s)
Then in blade view