我有此代码:
$query = $platform->challenges();
// return response()->json($query);
$challenges = $query->orderBy('start_date', 'DESC')->get();
return response()->json($challenges);
如您所见,我得到了挑战关系查询构建器,并且试图按日期对结果进行排序。如果我取消注释第二行,则会得到2个项目数组。但是,如果我将orderBy添加到构建器中,我只会得到1个项目数组。
有什么我想念的吗?
编辑
型号代码:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use GeneaLabs\LaravelModelCaching\Traits\Cachable;
class Platform extends Model
{
use Cachable;
protected $fillable = ['name', 'connection_key', 'code', 'enabled'];
public function brands()
{
return $this->hasMany('App\Models\Brand');
}
public function challenges()
{
return $this->hasMany('App\Models\Challenge');
}
}
也许是可教的特质在这里造成了不良行为?
答案 0 :(得分:0)
尝试此操作(使用提取的集合):
$challenges = $platform->challenges->sortByDesc('start_date');
return response()->json($challenges);
或者这个(使用查询生成器):
$platform->disableCache();
$challenges = $platform->challenges()->orderBy('start_date')->get();
从文档中:
特定型号的手动冲洗
您可以使用以下artisan命令刷新特定模型的缓存:
php artisan modelCache:clear --model=App\Model
这在手动进行数据库更新时非常有用。您还可以从Laravel应用程序外部的源对数据库进行更新后触发此操作。
答案 1 :(得分:0)
试试这个..
$query = $platform->challenges();
$challenges = $query->orderBy('start_date', 'DESC')->get();
return json_encode($challenges);
答案 2 :(得分:0)
您是否有一个名为“ start_date”的列,如果没有,为什么不这样做
$challenges = $query->orderBy('created_at', 'DESC')->get();
因为您已经具有created_at列