在视图中:
@if($posts)
@foreach($posts as$post)
<h2>
<a href="{{route('home.post',$post->id)}}">{{$post->title}}</a>
</h2>
<p class="lead">
by <a href="index.php">{{$post->user->name}}</a>
</p>
<p><span class="glyphicon glyphicon-time"></span> Posted {{$post->created_at->diffForHumans()}}</p>
<hr>
<img class="img-responsive" src="{{$post->photo->file}}" alt="">
<hr>
{!! str_limit($post->body,35 )!!}
<a class="btn btn-primary" href="{{route('home.post',$post->id)}}">Read More <span class="glyphicon glyphicon-chevron-right"></span></a>
<hr>
@endforeach
@endif
控制器中的:
public function searchmulti(){
$keyword=Input::get('title');
$posts = Post::where('title', 'like', "%$keyword%")->get();
return view('Admin.comments.postsauthor',compact('posts'));
}
/////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////
答案 0 :(得分:1)
使用toArray()
方法(see here)将搜索结果转换为数组,然后
迭代结果并使用str_replace
将搜索到的单词替换为<span class="highlight">your word</span>
在此之后,您将$post['title']
(而不是$post->title
)内部突出显示的范围
当然,您必须在css中添加.highlight
样式
$posts = Post::where('title', 'like', "%$keyword%")->get()->toArray();
foreach($posts as &$post){
$post['title']=str_replace($keyword,"<span class='highlight'>$keyword</span>",$post['title']);
}
PS如果您不想将结果转换为数组,您可以直接在eloquent模型中编辑tile,但我更喜欢数组,以确保我不会意外地保存更改