【问题标题】:Laravel paginate with only first resultLaravel 分页只有第一个结果
【发布时间】:2019-09-19 18:02:39
【问题描述】:

我对 Laravel 有点陌生,所以我希望这个问题足够清楚。

我有一个包含用户的表和另一个包含任务的表。

在我的用户模型中,我有以下内容:

public function tasks() {
    return $this->hasMany('App\User' , 'id');
}

我可以执行以下操作从数据库中检索单个用户

$users = \App\User::find(1)->tasks()->paginate();

但我明白了

{"current_page":1,"data":[{"id":1,"name":"Ed","email":"mail@weqweqeq.com","email_verified_at":null,"created_at":null,"updated_at":null,"tasks":[{"id":1,"name":"Ed","email":"mail@weqweqeq.com","email_verified_at":null,"created_at":null,"updated_at":null}]},{"id":2,"name":"Alyse","email":"mail@rxygewe.com","email_verified_at":null,"created_at":null,"updated_at":null,"tasks":[]}],"first_page_url":"http:\/\/127.0.0.1:8000?page=1","from":1,"last_page":1,"last_page_url":"http:\/\/127.0.0.1:8000?page=1","next_page_url":null,"path":"http:\/\/127.0.0.1:8000","per_page":15,"prev_page_url":null,"to":2,"total":2}

我也试过了:

    $users = \App\User::with(['tasks' => function($q) {
        $q->first();
    }])->paginate();

但任务属性为空

我的问题是我如何才能让所有用户,但只有第一个任务和分页才能工作?

任务表

1   id(Primary) bigint(20)      UNSIGNED    No  None        AUTO_INCREMENT
2   created_at  timestamp           Yes NULL        
3   updated_at  timestamp           Yes NULL        
4   task_name   varchar(255)    utf8mb4_unicode_ci      No  None        
5   user_id(Index)  bigint(20)      UNSIGNED    No  None        


【问题讨论】:

    标签: laravel-5 eloquent


    【解决方案1】:

    您的模型关系定义不正确。您已将一个用户与多个用户关联。
    https://laravel.com/docs/master/eloquent-relationships#one-to-many

    public function tasks() {
        // a User ($this) has many Tasks
        return $this->hasMany('App\Task');
    }
    

    另外,使用->first() 时要小心,因为除非指定,否则无法保证订单。

    $users = \App\User::with(['tasks' => function($q) {
        // get the most recently created task
        $q->latest()->first();
    }])->paginate();
    

    【讨论】:

      【解决方案2】:

      再举个例子

      $getData = $User::where('code_transaction',$code)->first();
      
      $pag = $getData->paginate(10);
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 此代码回答问题的附加上下文可提高其长期价值.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2019-08-30
      • 2013-11-30
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多