Laravel Eloquent `take` 和 `orderBy`

Ein*_*mer 4 laravel eloquent laravel-5

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

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

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

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

$this->hasMany("App\User")->take(3)->orderBy("id", "desc")
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*sen 5

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

$this->hasMany("App\User")->orderBy("id", "desc")->take(3)
Run Code Online (Sandbox Code Playgroud)

->take(3)将执行 SQL 查询,因此您首先需要将 添加orderBy("id", "desc")到 hasMany 关系中。