Laravel Raw Query упорядочить по - PullRequest
0 голосов
/ 29 мая 2018

У меня есть полиморфное отношение.

Class Reply

public function replyable()
{
    return $this->morphTo();
}

Который принадлежит User и Trainer.

Когда я получаю ответы, я хочу, чтобы ответ аутентифицированного пользователя был помещен первым.

Таким образом, если пользователь с правами доступа является тренером, ответ тренера должен быть первым, а пользователь с правами доступа - обычным пользователем, ответ пользователя должен быть первым.

Это то, что я получил сейчас.

public function index(Question $question)
{
        if (!! trainer()) {
            //if an auth user is a trainer, place their posts first in the response data
            return $question->replies()->orderByRaw("FIELD(replyable_id, ".trainer()->id.") DESC")->inRandomOrder()->with('replyable', 'question')->paginate(15);
        }

        if (auth()->check()) {
            //if an auth user is a normal user, place their posts first in the response data
            return $question->replies()->orderByRaw("FIELD(replyable_id, ".auth()->id().") DESC")->inRandomOrder()->with('replyable', 'question')->paginate(15);
        }

        return $question->replies()->with('replyable', 'question')->inRandomOrder()->paginate(15);
}

Мне нужно ограничить запрос на основе replyable_type.Таким образом, пользователь auth является тренером, ответы должны быть упорядочены вначале с ответом, который имеет replyable_type из App\Trainer с replyable_id любого идентификатора аутентифицированного пользователя (тренера).

Этот запросне работает.

 if (!! trainer()) {
            //if an auth user is a trainer, place their posts first in the response data
            return $question->replies()->orderByRaw("where replyable_type = trainers FIELD(replyable_id, ".trainer()->id.") DESC")->inRandomOrder()->with('replyable', 'question')->paginate(15);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...