Я хочу, чтобы уникальные посты упорядочивались по project_id
, в основном, если есть дублированные посты, я хочу тот, который project_id
не равен нулю. Есть ли способ получить это?
Этот код возвращает уникальные сообщения, но они не упорядочены по project_id
.
/**
* Get the posts record associated with the service.
*/
public function posts()
{
return $this->belongsToMany('App\Post')
->withPivot('id', 'unity', 'coefficient', 'project_id')
->orderBy('project_id', 'DESC')
->groupBy(['post_id']);
}
Если я удалю groupBy
, я получу дублирующиеся сообщения, заказанные по project_id
.
Выход dd($service->posts()->toSql());
:
select * from `posts`
inner join `post_service` on `posts`.`id` = `post_service`.`post_id`
where `post_service`.`service_id` = ?
group by `post_id`
order by `project_id` desc
Ниже я показываю полученные результаты и желаемый результат:
Я удалил дополнительные данные для лучшего чтения
Результат с предложениями groupBy
и orderBy
. Уникальные сообщения, но не заказанные project_id
:
"posts": [
{
"id": 733,
"pivot": {
"service_id": 20177,
"post_id": 733,
"id": 2575,
"project_id": null
}
},
{
"id": 725,
"pivot": {
"service_id": 20177,
"post_id": 725,
"id": 2576,
"project_id": null
}
}
],
Результат без предложения groupBy
. Дублированные сообщения, упорядоченные по project_id
:
"posts": [
{
"id": 733,
"pivot": {
"service_id": 20177,
"post_id": 733,
"id": 9723,
"project_id": 4
}
},
{
"id": 733,
"pivot": {
"service_id": 20177,
"post_id": 733,
"id": 2575,
"project_id": null
}
},
{
"id": 725,
"pivot": {
"service_id": 20177,
"post_id": 725,
"id": 2576,
"project_id": null
}
}
],
Результат, который я желаю. Уникальные сообщения, заказанные project_id
:
"posts": [
{
"id": 733,
"pivot": {
"service_id": 20177,
"post_id": 733,
"id": 9723,
"project_id": 4
}
},
{
"id": 725,
"pivot": {
"service_id": 20177,
"post_id": 725,
"id": 2576,
"project_id": null
}
}
],
Спасибо, что нашли время помочь мне.