Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 控制器中带变量的Laravel呼叫模型_Php_Laravel 5.5 - Fatal编程技术网

Php 控制器中带变量的Laravel呼叫模型

Php 控制器中带变量的Laravel呼叫模型,php,laravel-5.5,Php,Laravel 5.5,我在控制器中使用一个函数插入不同型号的多个不同表中。我的意思是控制器模型是可变的 下面的代码工作得很好,但我不喜欢语法,我非常确定在模型名称前面使用\App\调用模型时,除了str\u replace之外,还有其他方法 不使用\App\仅按型号名称调用会导致laravel错误找不到类。我已经在控制器的文件中写入了use\App\ModelName,但仍然不起作用 public function storeCommon(Request $request){ $model = '"\App\"

我在控制器中使用一个函数插入不同型号的多个不同表中。我的意思是控制器模型是可变的

下面的代码工作得很好,但我不喜欢语法,我非常确定在模型名称前面使用
\App\
调用模型时,除了
str\u replace
之外,还有其他方法

不使用
\App\
仅按型号名称调用会导致laravel错误
找不到类
。我已经在控制器的文件中写入了
use\App\ModelName
,但仍然不起作用

public function storeCommon(Request $request){
   $model = '"\App\"'. $request->model;
   $model =  str_replace ( "\"", "", $model ) ;

   ........
   ........       

   $row['text'] = $request->text;
   ........
   ........
   $common = $model::create($row);
}

我宁愿定义可能的模型数组,并在代码中使用它。通过这种方式,您将保护您的代码不受不需要的模型调用的影响,当然,您的代码将更具可读性:

protected $possibleModels = [
    'Model1' => \App\Model1::class,
    'Model2' => \App\Model2::class,
    ...
    ];

public function storeCommon(Request $request){
    if (!isset($this->possibleModels[$request->model])) {
        abort(404);
    }
    $model = $this->possibleModels[$request->model];
    $row['text'] = $request->text;
    ...
    $common = $model::create($row);
}

您好,由于语法问题,我想从数组中按变量获取模型,但我认为删除错误语法的代码太多了。现在我意识到它也会更具保护性,好主意,伙计谢谢你:)