2017-11-05 3 views
-1

나는 로컬 호스트에서 내보기에서 렌더링 할 때 항상 나에게 같은 순서를 제공이 웅변 (Laravel) 쿼리SQL 쿼리도 있지만 로컬 호스트하지 서버에서 ORDER BY 절에 나에게 무작위 순서를 제공

$cats = App\Category::leftJoin('categories as b', 'categories.cat_parent', 'b.id') 
     ->orderBy('b.id') 
     ->get([ 
      'b.id as father_id', 
      'categories.img as img', 
      'b.descr as child_descr', 
      'categories.id as child_id', 
      'categories.descr as father_descr' 
     ]); 

이 하지만 웹 사이트를 방문 할 때마다 새로 고침을 한 후에 순서가 바뀝니다.

*가 어떻게 진행되고 있습니까? 누구든지이 문제를 해결하도록 도와 줄 수 있습니까?

로컬 호스트와 서버 모두 MySQL을 사용합니다.

테이블 범주는 (id, descr, cat_parent, img, slug)로 정의됩니다.

+1

SQL 쿼리를 디버그 목적으로 출력 할 수 있습니까? –

+0

해결 :-) 감사합니다! –

답변

4

b.id 하나의 키로 정렬합니다. 이것을 "father_id"라고하면, 복수 행은 b_id과 같은 값을 갖는다 고 추측합니다.

SQL에서 정렬이 안정적이지 않습니다. 즉, 동일한 키를 사용하여 값을 정렬하는 것이 보장되지 않으며 한 통화에서 다른 통화로 변경할 수도 있습니다. 주문이 왜 안정적이지 않습니까? 간단합니다 : SQL 테이블은 을 나타내며 집합 번호는입니다. 따라서 명시 적으로 지정된 키를 제외하고는 행에 대해 "자연스러운"순서가 없습니다.

두 번째 키를 포함하여 안정적인 정렬을 제안하는 것이 좋습니다. 나는 이것이 무엇이 될지 모르겠다. 그러나 나는 child_id이 각 행을 고유하게 식별하여 정렬을 안정하게 만들 것이라고 추측 할 수있다.

+0

나는 그것을 바로 지금 할 것이다 :-) –

+0

그것은 그 것이었다 !!! 정말 고맙습니다 !! –