2014-06-13 3 views

답변

9

는 당신이 결정 : 내가 확인할 수

$model->relationship()->sync([1,2,3]); 

$model->relationship()->sync([4,5,6]); // attached [4,5,6], detached [1,2,3] 
$model->relationship()->getRelatedIds(); // [4,5,6] 

// but: 
$model->relationship()->sync([4,5,6], false); // attached [4,5,6], detached [] 
$model->relationship()->getRelatedIds(); // [1,2,3,4,5,6] 
+0

고마워, 잘 알고있다. 이것이 의미있는 부분을 알 수 있습니다. –

+0

와우. 나는 이것이 문서에 없다고 믿을 수 없다. http://laravel.com/docs/4.2/eloquent –

+0

그러나 모든 태그를 제거하면'sync()'는 아무 것도하지 않는다. 이 경우 어떻게 작동시킬 수 있습니까? 예를 들어, 이전에 관계형 테이블에'[1,2,3]'이 있고 Select2에서 모든 태그를 제거했기 때문에'sync ([])를 만들고 싶다면. 그러면 어떻게 모든 태그를 삭제합니까? – Pathros

0

대답은 예입니다. 나는 실제로 그것을 진술 한 어떤 문서도 찾을 수 없었다.

피벗 테이블이 "book_authors"인 "authors"및 "books"테이블이 2 개 있다고 가정 해 보겠습니다.

새로운 저자 작성 :

$author_id =2; 
$author->books()->sync(array(1,4,5,15)); 

지금 당신이 피벗 테이블 "book_authors"의 4 개 항목이 : 이제

author_id book_id 
2   1 
2   4 
2   5 
2   15 

업데이트 : 지금

$author_id =2; 
$author->books()->sync(array(1,15)); 

을 " book_authors "는 다음과 같습니다 :

author_id book_id 
    2   1 
    2   15 
+1

: synctrue 기본값 및 분리에 대한 책임이 두번째 매개 변수가 있습니다. 'sync()'메소드는 더 이상 존재하지 않는 릴레이션을 제거하고 여전히 관련성이있는 관계를 유지하기로되어 있습니다. – Andreyco

+0

그러나 모든 태그를 제거하면 sync()가 아무 것도하지 않습니다. 이 경우 어떻게 작동시킬 수 있습니까? 예를 들어, 이전에 관계형 테이블에 [1,4,5,15]가 있고 Select2에서 모든 태그를 제거했기 때문에 동기화 ([])를 만들고 싶다면. 그러면 어떻게 모든 태그를 삭제합니까? – Pathros