1
그래서 Foo와 Bar 모델이 있습니다. Foo는 Foo에 속한 많은 바 및 바를 가지고 있습니다.Eloquent를 사용하여 날짜순으로 조인을 주문하는 방법은 무엇입니까?
나는 최신/최신 바에 의해 주문 된 Foos 컬렉션을 얻으려고합니다. 나는 dd($foos->lists('bar_created_at', 'id'));
내가 날짜가 최신 바 기록하지 않은 것을 볼 때
$foos = Foo::select('foo.*', 'bar.id as bar_id', 'bar.created_at AS bar_created_at')
->join('bar', function($join) {
$join->on('foo.id', '=', 'bar.foo_id')
->where('bar.baz', '=', 1)
->where('bar.foobaz', '=', 1);
})
->groupBy('bar_id')
->orderBy('bar_created_at', 'desc')
->get();
는하지만, 그들은 실제로 가장 오래된이다. 어떤 도움을 크게 감상 할 수
select `foo`.*, `bar`.`foo_id` as `foo_id`, `bar`.`created_at` as `bar_created_at` from `foo` inner join `bar` on `foo`.`id` = `bar`.`foo_id` and `bar`.`foo` = ? and `bar`.`foobaz` = ? where `foo`.`deleted_at` is null group by `foo_id` order by `bar_created_at` desc
: 여기
생성 된 SQL입니다. 나는 Laravel 5.0을 사용하고있다.
당신은 남자입니다. 감사! 선택에 대해 설명하고 왜 부모 (foo) ID로 그룹화해야하는지 설명해 주시겠습니까? – Chris
@Chris 나는 한 가지만 훑어 보았습니다. 이렇게하면 bar.id를 선택할 수 없습니다. 그래서 나는 그것을 select에서 제거했다. –
@Chris 이것은 집계가 작동하는 방식입니다. 같은'foo.id' (또는 같은'bar.foo_id')를 가진 모든 행을 그룹화합니다. 그룹의 모든 행에서 'bar.created_at'에서 가장 큰 값만 선택합니다. –