Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel 5.4中使用分页和laravel雄辩的查找方法_Php_Laravel_Pagination_Laravel 5.4 - Fatal编程技术网

Php 如何在laravel 5.4中使用分页和laravel雄辩的查找方法

Php 如何在laravel 5.4中使用分页和laravel雄辩的查找方法,php,laravel,pagination,laravel-5.4,Php,Laravel,Pagination,Laravel 5.4,我试图在laravel中实现分页,但出现以下错误 Undefined property: Illuminate\Pagination\LengthAwarePaginator::$name 这是我的控制器功能 public function showTags($id) { $tag = Tag::find($id)->paginate(5); // when lazy loading $tag->load(['posts' => function (

我试图在laravel中实现分页,但出现以下错误

Undefined property: Illuminate\Pagination\LengthAwarePaginator::$name
这是我的控制器功能

public function showTags($id)
{
    $tag = Tag::find($id)->paginate(5);

    // when lazy loading
    $tag->load(['posts' => function ($q) {
        $q->orderBy('id', 'desc');
    }]);

    return view('blog.showtags')->withTag($tag);
}
这是标签模型

class Tag extends Model
{
    public function posts() 
    {
        return $this->belongsToMany('App\Post');
    }
}
Tag和Post模型具有belongsToMany关系,因此在特定标记下有许多Post,我的目标是按Post的降序迭代特定标记下的所有Post,并在该页面中实现分页

下面是showtags视图的代码

<table class="table">
    <thead>
    <tr>
        <th>#</th>
        <th>Title</th>
        <th>Tags</th>
    </tr>
    </thead>
    <tbody>
    <?php $count = 1; ?>
    @foreach($tag->posts as $post)
        <tr>
            <th>{{ $count++ }}</th>
            <th>{{ $post->title }}</th>
            <th>@foreach($post->tags as $tag)
                    <span class="label label-default">{{ $tag->name }}</span>
                @endforeach
            </th>
        </tr>
    @endforeach
    </tbody>
</table>

//Here is the code i used for pagination in view
<div class="text-center">
    {!! $tag->posts->links() !!}
</div>

#
标题
标签
@foreach($tag->posts as$post)
{{$count++}
{{$post->title}
@foreach($post->tags as$tag)
{{$tag->name}
@endforeach
@endforeach
//下面是我在视图中用于分页的代码
{!!$tag->posts->links()!!}

如果有人知道怎么做,请回复。提前感谢。

用这一行
$tag=tag::find($id)->分页(5)
您应该只获得一个标记(如果id为的标记不存在,则为null),然后您希望对其进行分页。如果你想对你的标签进行分页,得到所有的标签,然后对它进行分页
Tag::paginate(5)
我用一个简单的技巧解决了这个问题。我的目标是在相同的标签下对所有帖子进行分页,就像你们在StackOverflow中看到的一样

修改后的控制器功能为

public function showTags($id)
{
    $tag = Tag::find($id);

    // when lazy loading
    $tag->load(['posts' => function ($q) {
    $q->orderBy('id', 'desc')->paginate(10);
    }]);

    return view('blog.showtags')->withTag($tag);
}
正如你们所看到的,我将paginate()函数从find移动到load函数,我以前使用它按降序对post进行排序

现在在视图中,不再使用传统方法
{!!$tag->links()!!}
创建分页链接


我使用
{!!$tag->paginate(10)!!

不确定是否缺少某些内容,但
find
仅获取一行,因此无法对其进行分页。你想做什么?@apokryfos我知道find只给出一行,但你可以在我的视图中看到,我在同一个标记下迭代每个帖子,因为标记与帖子有很多关系。我的目标是通过分页将所有帖子组织在同一标签下。那么有什么方法可以做到这一点吗?你可能会做一些类似于
$tag->posts()->paginate(5)
或类似的事情。在函数
showTags($id)
中,
$id
是一个标签id。对吗?@apokryfos感谢你的建议,我用$tag->posts()->paginate(5)替换$tag->posts->links()在我看来,从视图中删除错误并相应地对控制器进行轻微修改有助于解决问题。