【问题标题】:Laravel Eloquent `take` and `orderBy`Laravel Eloquent `take` 和 `orderBy`
【发布时间】:2017-03-21 08:40:46
【问题描述】:

当我尝试使用“take”和“orderBy”查询时,模型返回一些记录:

$this->hasMany("App\User")->take(3)

$this->hasMany("App\User")->orderBy("id", "desc")

但是当我组合它们时,它返回一个空数组:

$this->hasMany("App\User")->take(3)->orderBy("id", "desc")

我运行原始 sql(来自 toSql() 函数) 它按我的预期返回 3 条记录。 我犯了什么错误?

【问题讨论】:

    标签: laravel laravel-5 laravel-eloquent


    【解决方案1】:

    您需要更改顺序,它将是:

    $this->hasMany("App\User")->orderBy("id", "desc")->take(3)
    

    这个->take(3) 将执行SQL 查询,所以你首先需要将orderBy("id", "desc") 添加到hasMany 关系中。

    【讨论】:

    • 我改变了我的链的顺序,但是当 orderBy 为空(默认为“asc”)时,结果就像我预期的那样返回。
    • 如果我理解正确,它不能正常工作,是你的顺序错误还是?
    • (1) $this->hasMany("App\User")->orderBy("id")->take(3) (2) $this->hasMany("App\User")->orderBy("id", "desc")->take(3) (1) 返回 3 条记录,但 (2) 返回空数组
    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 2015-06-17
    • 2019-03-29
    • 2016-08-21
    • 2011-08-29
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多