[英]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.