programing

관계 컬렉션을 라벨로 다시 로드하려면 어떻게 해야 합니까?

goodsources 2023. 8. 24. 22:00
반응형

관계 컬렉션을 라벨로 다시 로드하려면 어떻게 해야 합니까?

라라벨에서, 사용 후attach()또는detach()관계에서 무언가를 추가하거나 제거하기 위해 컬렉션이 변경되지 않았습니다.그래서 만약 내가 그 관계를 포함하는 모델을 가지고 있다면.[1, 2]이후:

$model->relation()->detach(1);
$model->relation()->attach(3);

그것은 여전히 포함할 것입니다.[1, 2]새로 고치려면 어떻게 해야 하나요?

단일 명령으로 라벨에 관계를 로드하도록 쉽게 지시할 수 있습니다.

$model->load('relation');

관계 컬렉션을 새로 고치라고 말할 것입니다.$model->relation이제 올바른 값이 표시됩니다.

또한 관계를 언로드하는 것은 다음과 같습니다.

$model->unsetRelation('relation')

Laravel 7.x에서 사용할 수 있습니다.$model->refresh()모델과 관계를 새로 고치기 위한 것입니다.

여기 서류가 있습니다.

둘 중 어느 쪽이든unset요청 시 시스템을 다시 로드할 수 있습니다.

unset($model->relation)

또는

$model->unsetRelation('relation');

그리고 요청에 따라 로드되도록 합니다.

결론: 여기에 포함된 세 가지 솔루션

$model->load('relation');

unset($model->relation);

$freshCollection = $user->roles()->get();`

Murplent 쿼리 작성기를 사용할 수 있습니다.

$freshCollection = $user->roles()->get();

필요에 따라 모든 관계를 강제로 다시 로드하고 모델 내부에 있는 경우 다음을 사용할 수 있습니다.

$this->relations = [];

$model->http:// 나를 위해 그 일을 했습니다.내포된 모형의 여러 수준을 복제한 다음 모형에 대해 반복실험을 수행하려고 했습니다.Laravel은 새로운 "현재" 관계가 아닌 이전 관계를 캐싱하고 있었습니다.

언급URL : https://stackoverflow.com/questions/23364276/how-do-i-reload-a-relation-collection-in-laravel

반응형