Laravel 5-命名空间+动态模型


Laravel 5 - Namespace + Dynamic Model

我有一个非常基本的功能来删除Laravel 4.x上一个简单网站上的内容,它的工作原理如下:

public function delete()
{
    ...
    $Model = Input::get('Model');       
    $Action = $Model::find($Id);
   ...
}

现在在Laravel 5上,我也在尝试做同样的事情,但到目前为止我还不能,因为名称空间。由于$Model是动态的,我不想对所有内容都使用use

像这样的东西:

use App'C'Models as Model;
public function delete()
{
...
$Action = Model'$Model::find($Id);
...
}

简单不起作用。实现这一目标的正确方法是什么?

只需先将带名称空间的类名存储为字符串:

$Model = Input::get('Model');
$NamespacedModel = '''Model''' . $Model;
$Action = $NamespacedModel::find($Id);

在同样的情况下,我的代码是这样的。。。

public function FunctionName(Request $request)
{
    $modelName = $request->model;
    $model = '''App''Models'''.$modelName;
    $q = $model::find($request->id);
    $q->someColumn = 'someValue';
    $q->save();
    return back();
}

注意:我使用的是Laravel 8