简体   繁体   English

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

[英]Laravel 5 - Namespace + Dynamic Model

I have a very basic function to delete stuff on a simple website on Laravel 4.x that works like this:我有一个非常基本的功能来删除 Laravel 4.x 上一个简单网站上的内容,其工作方式如下:

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

Now on Laravel 5, I'm trying to do the same but so far I can't because the namespaces.现在在 Laravel 5 上,我正在尝试做同样的事情,但到目前为止我不能,因为命名空间。 Since the $Model is dynamic I don't want to make use for everything.由于 $Model 是动态的,我不想对所有内容都use

And something like this:和这样的事情:

use App\C\Models as Model;

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

Simple do not works.简单行不通。 What'd be the right approach to get this to work?让这个工作的正确方法是什么?

Simply store the namespaced classname as a string first:首先将命名空间类名存储为字符串:

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

In the same case, My code is like this...同样的情况,我的代码是这样的......

public function FunctionName(Request $request)
{
    $modelName = $request->model;

    $model = '\\App\\Models\\'.$modelName;

    $q = $model::find($request->id);

    $q->someColumn = 'someValue';

    $q->save();

    return back();
}

Note: I am using Laravel 8注意:我使用的是 Laravel 8

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

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