Laravel 다중 관계식에 사용되는 중간 테이블의created_at, updated_열별로 정렬(예:at)
전제 조건
users
과posts
는favorites
을 중간표로 하여 다대다의 관계이다.TL;DR
public function favorite_posts()
{
return $this
->belongsToMany(Post::class, 'favorites', 'user_id', 'post_id')
->withPivot(['created_at', 'updated_at', 'id'])
->orderBy('pivot_updated_at', 'desc')
->orderBy('pivot_created_at', 'desc')
->orderBy('pivot_id', 'desc');
}
간단한 설명
withPivot()
중간 테이블의 열을 탐색할 수 있습니다.withPivot()
의 매개 변수는 그룹 형식으로 orderby()
에서 사용할 열을 지정합니다.orderBy()
의 첫 번째 매개변수에는 "pivot_'+열 이름으로 지정합니다.확인
favorite_posts()를 호출하기 전과 후에 다음 내용을 주의하여 실제 흐르는 SQL을 보십시오.
DB::enableQueryLog();
$user->favorite_posts;
dd(DB::getQueryLog());
array:1 [
0 => array:3 [
"query" => "select `posts`.*, `favorites`.`user_id` as `pivot_user_id`, `favorites`.`post_id` as `pivot_post_id`, `favorites`.`created_at` as `pivot_created_at`, `favorites`.`updated_at` as `pivot_updated_at`, `favorites`.`id` as `pivot_id` from `posts` inner join `favorites` on `posts`.`id` = `favorites`.`post_id` where `favorites`.`user_id` = ? order by `pivot_updated_at` desc, `pivot_created_at` desc, `pivot_id` desc"
"bindings" => array:1 [
0 => 1
]
"time" => 0.37
]
]
중간표favorites
의updated_at
,created_at
,id
에서orderby를 확인했다참고 자료
https://readouble.com/laravel/5.8/ja/eloquent-relationships.html
https://stackoverflow.com/questions/26551078/how-to-order-by-pivot-table-data-in-laravels-eloquent-orm/50767168
Reference
이 문제에 관하여(Laravel 다중 관계식에 사용되는 중간 테이블의created_at, updated_열별로 정렬(예:at)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kshiva1126/items/e73bc3535367a4bf3fa5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)