Как упорядочить данные по отношениям в laravel с нумерацией страниц - PullRequest
0 голосов
/ 12 сентября 2018

Это моя таблица. Мне нужны все посты в порядке убывания. Я хочу рекламируемые посты сверху.

enter image description here

пример результата

enter image description here

Код

$data=Post::get();

Отношения в модели

public function isAdvertised()
    {
        return $this->hasOne('App\models\PostAdvertise', 'post_id');
    }

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Вы можете использовать leftJoin

$data = Post::leftJoin('post_advertise', 'post.id', '=', 'post_advertise.post_id')
    ->orderBy('post_advertise.created_at')
    ->select('post.id', 'post.title', 'post.description')
    ->get();
0 голосов
/ 12 сентября 2018

1001 * попробовать *

$posts = Post::with('isAdvertised')->all();
$sorted_posts = $posts->sortBy(function ($post, $key) {
    return (is_null($post->isAdvertised) ? 1 : 0);
});

Это позволит заказать коллекцию.

0 голосов
/ 12 сентября 2018
$posts = Post::orderBy('created_at','desc')->get();

Затем вы можете добавить это к своему представлению:

@foreach($posts as $post)
    $post->post_advertise->title
@endforeach 

Если это не работает, я бы посоветовал вам опубликовать именно то, что вы сделали, например, вашу миграцию, модель (отношения) и контроллер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...