php - 在 Laravel 中对关系模型中的数据进行分页

标签 php laravel pagination laravel-5.6

如果标题不完全有意义,我深表歉意...我不确定模型链接的确切术语是否是 Controller 中的关联数据。

我正在尝试使用用户创建的帖子对表格进行分页。

我之前成功对其进行了分页,但帖子表中没有 user_id。但我已将 user_id 添加到 posts 表中,并运行迁移,效果很好。

以下是我的 Post 模型:

    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Post extends Model
    {
      public function user(){
        return $this->belongsTo('App\User');
      }
    }

这是我的User模型:

    namespace App;

    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;

    class User extends Authenticatable
    {
        use Notifiable;
        protected $fillable = ['name', 'email', 'password',];

        protected $hidden = ['password', 'remember_token',];

        public function posts() {
          return $this->hasMany('App\Post');
        }
    }

这是后 Controller 的相关部分:

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\Post;
    use App\User;
    use Session;
    use Carbon\Carbon;

    class PostController extends Controller
    {

      public function index()
      {

        $user_id = auth()->user()->id;
        $user = User::find($user_id);

        return view('posts.index')->with('posts', $user->posts);
      }

我认为这只是将 ->paginate(5) 附加到 PostController 中的 $user 的情况,但是这似乎不起作用。

我得到以下信息:

Undefined property: Illuminate\Pagination\LengthAwarePaginator::$posts

我尝试过包含 {!! $posts->links() !!}posts.index View 中 @foreach 之前,但给出:

Undefined property: Illuminate\Pagination\LengthAwarePaginator::$posts

我试图通过创建这个 CRUD 应用程序来学习 Laravel 基础知识,并尝试将两个教程结合在一起,但我显然错过了一些东西。

最佳答案

您可以像这样对关系调用 ->paginate() (我也删除了不必要的用户查询,因为 auth()->user()将会执行它):

public function index()
{
    $user = auth()->user();
    $posts = $user->posts()->paginate();
    // Or with 1 line: $posts = auth()->user()->posts()->paginate();
    return view('posts.index')->with('posts', $posts);
}

关于php - 在 Laravel 中对关系模型中的数据进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49943302/

相关文章:

php - PHP中如何处理日期格式

php - 条件计数 MySQL

php - WooCommerce 电子邮件通知中基于产品类别的不同收件人

php - Laravel 环境变量(方法中没有传递默认值)在 Artisan 命令文件中不起作用

laravel - 如何避免自动 pull 请求中的符号链接(symbolic link)破坏?

java - 从 HttpHeader 中获取范围值

python - 如何在 postgresql 中进行分页?

php - 一页中的 Laravel 多页分页

php - Auth()::user() 在 Laravel 中的多重身份验证中不起作用

php - 公共(public)文件的 Laravel CORS 问题