Laravel - расширяет отношения с помощью orderBy не работает должным образом - PullRequest
0 голосов
/ 09 января 2019

У меня есть этот код:

$query = $platform->challenges();
// return response()->json($query);
$challenges = $query->orderBy('start_date', 'DESC')->get();
return response()->json($challenges);

Как видите, я получаю конструктор запросов взаимосвязей задач и пытаюсь упорядочить результаты по дате. Если я раскомментирую вторую строку, я получу массив из 2 элементов. Но если я добавлю orderBy в конструктор, я получу только 1 элемент массива.

Чего-то мне не хватает?

EDIT

Код модели:

<?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');
    }
}

Может быть, эта закаленная черта порождает здесь плохое поведение?

Ответы [ 3 ]

0 голосов
/ 09 января 2019

Попробуйте это ..

$query = $platform->challenges();
$challenges = $query->orderBy('start_date', 'DESC')->get();
return json_encode($challenges);
0 голосов
/ 09 января 2019

у вас есть столбец с именем "start_date", если нет, то почему бы не сделать что-то подобное

$challenges = $query->orderBy('created_at', 'DESC')->get();

, поскольку у вас уже есть столбец create_at

0 голосов
/ 09 января 2019

Попробуйте это (используя извлеченные коллекции):

$challenges = $platform->challenges->sortByDesc('start_date');
return response()->json($challenges);

Или это (с помощью построителя запросов):

$platform->disableCache(); 
$challenges = $platform->challenges()->orderBy('start_date')->get();

ИЗ ДОКУМЕНТОВ :

Ручная промывка определенной модели

Вы можете очистить кэш определенной модели, используя следующую команду ремесленника:

php artisan modelCache:clear --model=App\Model

Это удобно при ручном обновлении базы данных. Вы также можете вызвать это после обновления базы данных из источников вне вашего приложения Laravel.

...