public function index(Request $request)
{
if($request->search) {
$posts = Post::join('users', 'author_id', '=', 'users.id')
->where('title', 'like', '%'.$request->search.'%')
->Orwhere('descr', 'like', '%'.$request->search.'%')
->Orwhere('name', 'like', '%'.$request->search.'%')
->orderBy('posts.created_at', 'desc')
->get();
return view('posts.index', compact('posts'));
}
-
$posts = Post::join('users', 'author_id', '=', 'users.id')
->orderBy('posts.created_at', 'desc')
->paginate(6);
return view('posts.index', compact('posts'));
}
视图
@extends('layouts.layout')
@section('content')
@if(isset($_GET['search']))
@if(count($posts) > 5)
<h2>Результаты поиска по запросу <?= $_GET['search'] ?></h2>
<p class="lead">Всего найдено: {{ count($posts) }} постов</p>
@elseif(count($posts) == 1)
<h2>Результаты поиска по запросу <?= $_GET['search'] ?></h2>
<p class="lead">Всего найдено: {{ count($posts) }} пост</p>
@elseif(count($posts) == 2 || count($posts) == 3 || count($posts) == 4)
<h2>Результаты поиска по запросу <?= $_GET['search'] ?></h2>
<p class="lead">Всего найдено: {{ count($posts) }} поста</p>
@else
<h2>По запросу <?= $_GET['search'] ?> ничего не найдено</h2>
<a href="{{ route('post.index') }}" class="btn btn-outline-danger">Отобразить все посты</a>
@endif
@endif
<div class="row">
@foreach($posts as $post)
<div class="col-6 mt-3">
<div class="card">
<div class="card-header">
<h2>{{ $post->short_title }}</h2>
</div>
<div class="card-body">
<div class="card-img mb-2" style="background-image: url({{ $post->img ?? asset('img/default.png') }});"></div>
<div class="card-author mb-2">
<h5><span class="badge badge-secondary">Автор:</span> {{ $post->name }}</h5>
</div>
<a href="{{ route('post.show', ['id' => $post->post_id]) }}" class="btn btn-outline-danger mb-2">Посмотреть пост</a>
</div>
</div>
</div>
@endforeach
</div>
@if(!isset($_GET['search']))
{{ $posts->links() }}
@endif
@endsection
Всемпривет。 Помогитеразобраться,вчёмошибка。 Выдаётэто- Illuminate \ Pagination \ LengthAwarePaginator类的对象无法转换为int
你好帮助我找出错误所在。给它- Illuminate \ Pagination \ LengthAwarePaginator类的对象无法转换为int
答案 0 :(得分:0)
第29行的连字符是问题的根源,请将其删除,即可开始使用,PHP尝试将$posts
强制转换为整数以应用- $posts
,因此出现错误。如果有搜索词,还需要对帖子进行分页,以使传递到posts.index
视图的数据保持一致。编写代码的更好方法:
public function index(Request $request)
{
$posts = Post::join('users', 'author_id', '=', 'users.id')
->orderBy('posts.created_at', 'desc');
if($request->search) {
$posts = $posts->where('title', 'like', '%'.$request->search.'%')
->Orwhere('descr', 'like', '%'.$request->search.'%')
->Orwhere('name', 'like', '%'.$request->search.'%');
}
$posts = $posts->paginate(6);
return view('posts.index', compact('posts'));
}