所以我有一个Post表,其中每个帖子都在一个相册中,我想按post属性搜索,还要查看该帖子的相册,我该怎么做?
我尝试在控制器中使用它
$posts = album::whereHas('post', function($q) use ($search) {
$q->where('nama', 'like', "%$search%", 'or')->where('deskripsi', 'like', "%$search%");
})->get();
这是我的刀片视图,首先显示相册,然后显示帖子
@foreach($posts as $p )
.....
@foreach($p->post->where('nama', 'like', "%$search%", 'or')->where('deskripsi', 'like', "%$search%") as $post)
....
@endforeach
@endforeach
但是问题是它给了我所有的专辑,甚至没有这张专辑的。我的英语不是最好,但我希望你能听懂
答案 0 :(得分:0)
将此添加到您的Post模型中:
Array
,它假设将相册模型添加到从数据库中检索到的每个帖子中。如果关系方法(在Post模型中)的名称与String
不同,请相应地更改此数组。
然后只使用此查询:
Dictionary
并像这样迭代:
$with = ['album'];
答案 1 :(得分:0)
按如下所示更改查询:
$albums = album::whereHas('post', function($q) use ($search) {
$q->where('nama', 'like', '%'.$search.'%')
})
->orWhereHas('post', function($q) use ($search) {
$q->where('deskripsi', 'like', '%'.$search.'%')
})
->get();
您眼中的香槟:
@foreach($albums as $album )
..... // display here album data
@foreach($album->post as $post)
.... // display here post data
@endforeach
@endforeach
编辑:
在您的相册模型中,为帖子定义新的关系:
public function searchedPosts($search = null)
{
$posts = $this->hasMany('App\Post'); // your model path
if($search!=null){
$posts->where('nama', 'like', '%'.$search.'%')->orWhere('deskripsi', 'like', '%'.$search.'%');
}
return $posts;
}
按如下所示更改查询:
$albums = album::with('post)->whereHas('post', function($q) use ($search) {
$q->where('nama', 'like', '%'.$search.'%')
})
->orWhereHas('post', function($q) use ($search) {
$q->where('deskripsi', 'like', '%'.$search.'%')
})
->get();
按如下所示更改视图:
@foreach($albums as $album )
..... // display here album data
@foreach($album->searchedPosts($search)->get() as $post)
.... // display here post data
@endforeach
@endforeach
答案 2 :(得分:0)
public function search(Request $request)
{
$query = $request->input('query');
$posts = Post::where('title','LIKE',"%$query%")
->approved()->publish()->get();
return view('FrontPage.search',compact('posts','query'));
}