我有一个非常基本的功能来删除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);
...
}
简单不行。什么是让这个工作的正确方法?
答案 0 :(得分:7)
$Model = Input::get('Model');
$NamespacedModel = '\\Model\\' . $Model;
$Action = $NamespacedModel::find($Id);
答案 1 :(得分:0)
同样的情况,我的代码是这样的...
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