我有一个非常基本的功能来删除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