如何使用Laravel Eloquent类作为变量并循环以对所有模型执行相同的查询

时间:2017-09-07 20:45:07

标签: php laravel eloquent

我遇到的情况是我必须为许多模型执行相同的查询。我想知道是否有可能在阵列中违反我的Eloquent类然后循环。这是一个pseidocode:

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

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

尝试了几种方法但总是以TypeError结束。这是否可能,如果是这样 - 什么是正确的方法?

2 个答案:

答案 0 :(得分:3)

它应该没有任何问题,例如:

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

foreach ($models as $model) {
    $user = $model::where('email','sample@example.com')->first();
}

答案 1 :(得分:1)

只需创建依赖项,文本就绪模型

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
}


}

}