2017-09-07 1 views
0

많은 모델에 대해 동일한 쿼리를 수행해야하는 상황이 있습니다. 배열에서 내 Eloquent 클래스를 무시하고 그 이상을 반복 할 수 있는지 궁금합니다. 여기에 pseidocode가 있습니다 :Laravel Eloquent 클래스를 변수로 사용하고 모든 모델에 대해 동일한 쿼리를 수행하는 루프 오버

$models = [Model1, Model2, Model3, Model4]; 

foreach($models as $model){ 
    $model::where(...)->... 
} 

여러 접근법을 시도했지만 항상 TypeError로 끝났습니다. 이것이 가능합니까? 그렇다면 올바른 접근 방식은 무엇입니까?

+0

가 모델 1 등 인스턴스 또는 클래스 자체인가? – pseudoanime

+0

'foreach .. {app() -> make ($ model) -> where ...}'어때? – devk

답변

2

그것은 작동합니다을 종속성을 만들 :

$models = [\App\User::class, \App\Admin::class]; 

foreach ($models as $model) { 
    $user = $model::where('email','[email protected]')->first(); 
} 
0

바로이 같은 예를 들어 뭔가를, 아무 문제없이, 텍스트 준비 모델

class MyController extends Controller 
{ 

    protected $models; 
    protected $result; 


    public function __construct(Model1 $model,Model2 $model2){ 
$this->models[]=>$model1; 
$this->models[]=>$model2; 
//... 
} 


pubflic function(){ 

foreach($this->models as $model){ 
$this->result[]=$model->where(...)//your code 
} 


} 

}