【问题标题】:Eloquent OrderBy and Take not working in a hasMany relationshipEloquent OrderBy 和 Take 不在 hasMany 关系中工作
【发布时间】:2021-12-16 16:57:10
【问题描述】:

我试图限制在 hasMany 关系中返回的条目数,当使用 orderBy 或 take 时,该关系可以正常工作。但是当它们一起使用时,结果似乎是错误的。

这个查询有什么问题?

预期结果 = 2 行数据

实际结果 = 2 行数据

public function manual_ticket_log(){
    return $this->hasMany('App\ManualTicketLog','manual_ticket_id','id')->orderBy('id','desc');
}

预期结果 = 1 行数据

实际结果 = 1 行数据

public function manual_ticket_log(){
    return $this->hasMany('App\ManualTicketLog','manual_ticket_id','id')->take(1);
}

--这里有错误--

预期结果 = 1 行数据

实际结果 = 返回空数组

  public function manual_ticket_log(){
        return $this->hasMany('App\ManualTicketLog','manual_ticket_id','id')->orderBy('id','desc')->take(1);
    }

【问题讨论】:

标签: php mysql laravel eloquent


【解决方案1】:

在 hasMany 之外,您可以使用 HasOne 仅获取一条记录:

public function manual_ticket_log(){
        return $this->hasOne('App\ManualTicketLog','manual_ticket_id','id')->orderBy('id','desc');
    }

hasOne 只会得到第一个结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2020-03-25
    • 2014-04-29
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    相关资源
    最近更新 更多