如何从Laravel 5中的变量使用其名称获取模型对象?

时间:2015-08-31 05:26:31

标签: class object model laravel-5

我正在尝试使用其名称从模型中获取信息,该名称是使用ajax调用从刀片发送的参数。

$.get("{{ url('auditInformation')}}", {modelName: modelName,versions:versions,currentData:currentData[index]});

现在我需要从模型中使用 modelName 检索信息。

所以当我尝试这个时:

$auditInfo=Input::all();
    $modelName=$auditInfo['modelName'];
    $values=$modelName::find(1);

我收到此回复 未找到“指定”类别

但如果我使用

$modelName=new Designation();
    $values=$modelName::find(1);

然后它显示了我想要的数据。

所以我理解这完全是关于模型(类)对象。

有没有办法使用 $ auditInfo ['modelName'] 将对象分配给 $ modelName

由于

3 个答案:

答案 0 :(得分:2)

如果你想这样做,你应该使用模型的命名空间。

例如,如果'目的地' model的名称空间是app \ Destination,你应该这样使用:

$auditInfo=Input::all();
$appPrefix = 'app';
$modelName=$appPrefix . '\' . $auditInfo['modelName'];
$values=$modelName::find(1);

答案 1 :(得分:1)

单引号之间的单反斜杠被视为转义序列,因此使用双反斜杠是100%的工作。例如

public function index(Request $request) {
    $model_prefix="App\Models";
    $modal = $model_prefix.'\\'.$request->type;
    $modal::updateOrcreate(['users_id'=>session("user")->users_id],$request->all())->save();
    dd(Profile::all());
}
//Laravel 7.0

答案 2 :(得分:0)

这似乎可行

$table_name = "App\Models\PeopleYouMayLikeModel";

$obj = $table_name::where($column_name_identifier_1, '=', $row_identifier_1)
                  ->where($column_name_identifier_2, '=', $row_identifier_2)->first();