>  기사  >  백엔드 개발  >  Laravel Eloquent에서 `$model->relation()`과 `$model->relation()`을 언제 사용해야 합니까?

Laravel Eloquent에서 `$model->relation()`과 `$model->relation()`을 언제 사용해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-31 08:24:30349검색

Laravel Eloquent의

When should I use  `$model->relation()`과 `$model->relation()` 비교? 
relation()` vs. Laravel Eloquent의 `$model->relation()`? " />

Eloquent의 메소드 호출 $model->relation();과 $model->relation의 차이점

Laravel의 Eloquent ORM에서 $model->의 차이점 이해 ;relation(); 및 $model->relation이 중요합니다.

$model->relation()

$model->relation()을 호출하면 정의된 관계 함수가 직접 호출됩니다. 모델에서 이 함수는 일반적으로 다음과 유사합니다.

<code class="php">public function distributors()
{
    return $this->hasMany('Distributor');
}</code>

$store->distributors()를 호출하면 $this->hasMany('Distributor')의 반환 값을 얻습니다. IlluminateDatabaseEloquentRelationsHasMany.

$model->relation() 활용 시기: 이 메소드는 관계 쿼리를 실행하기 전에 추가로 맞춤화해야 할 때 유용합니다.

<code class="php">$distributors = $store->distributors()->where('priority', '>', 4)->get();</code>

$store->distributors()->get()을 사용하는 것이 더 간단한 대안이지만 결과는 동일합니다.

$model->relation

Laravel은 관계 결과에 속성으로 직접 액세스할 수 있는 배후 기술을 사용합니다. $model->relation을 호출하면 실제로 기존 속성에 액세스하지 않습니다. 대신 Laravel은 이 호출을 가로채서 __get()으로 라우팅합니다.

이 메서드는 궁극적으로 속성 이름('distributors')으로 getAttribute()를 호출하여 관계가 캐시되었는지('relations') 확인합니다. 정렬). 그렇지 않고 관계 메소드가 존재하는 경우 이를 로드하려고 시도합니다(getRelationshipFromMethod). 마지막으로 모델은 쿼리를 실행하는 getResults()를 통해 관계의 결과를 검색합니다.

본질적으로 $model->relation은 $model->relation()->get과 동일합니다. (), 관계 결과를 직접 반환합니다.

결론

  • $model->relation()은 관계 개체 자체를 반환하므로 추가 쿼리 사용자 정의가 가능합니다.
  • $model->relation은 쿼리 결과를 직접 검색하여 편리한 단축키를 제공합니다.

Eloquent를 효과적으로 사용하려면 이 차이점을 이해하는 것이 중요합니다.

위 내용은 Laravel Eloquent에서 `$model->relation()`과 `$model->relation()`을 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.