繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM