2017-11-03 2 views
0

필자는 모델 몇 개를 썼다. 반복되는 메서드 - 모든 모델 또는 대부분의 모델에서 사용되는 메서드가 있음을 알게되었습니다.모델에 대한 반복 된 메서드

다른 파일로 이식하고 필요에 따라 모델에 추가하는 가장 좋은 방법은 무엇입니까?

특성?

+0

변형을위한 방법으로 이동하거나 모델을 확장하십시오. 예 : 'class CustomModel은 모델 {}을 확장하고 Post 클래스는 CustomModel을 확장합니다. '참조 : https://laracasts.com/discuss/channels/eloquent/how-to-override-base-model-some-methods-in- laravel-51 –

답변

1

이럴 것은, 추상 클래스 DomainModel을 만들 Illuminate\Database\Eloquent\Model이 클래스를 확장하고 마지막으로 MyModel

use Illuminate\Database\Eloquent\Model 

abstract class DomainModel extends Model 
{ 
    use ModelMethods1, ModelMethods2 

} 

내부에 이러한 특성을 사용하여 다음

class User extends DomainModel 
{ 

} 

이 당신을 제공 모델의 CLASSE에 DomainModel를 확장 적응성.

  1. Illuminate\Database\Eloquent\Model 또는 DomainModel 중 하나에서 Model Classes 확장.
  2. 당신은 내가 대규모 프로젝트에이 방법을 사용 한 모든 Model Class

에 독립적으로 사용자의 특성을 사용할 수 있으며 항상 나를 혜택을 받았다.

+0

감사합니다. 흥미로운 접근법, 그래서 추상은 다양한 형질에 대한 그룹화 역할을합니까? 그렇지 않으면 모델에서 직접 특성을 사용할 수 있습니까? 초록을 사용하는 이유는 무엇입니까? – rock3t

+0

우리는'DomainModel'을 프록시 클래스로만 사용하기 때문에 누구나 인스턴스를 생성하지 않아도됩니다. – rummykhan

+0

예, 그렇지만 왜 그것을 전혀 사용하지 않습니까? 부모 모델에서'Model1, Mode2; use '를 사용할 수 있기 때문에 추상화는 무엇을 해결합니까? – rock3t