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

时间:2015-04-08 14:31:52

标签: php laravel-5

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

简单不行。什么是让这个工作的正确方法?

2 个答案:

答案 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