Check if a class is a Model in Laravel 5

余生长醉 提交于 2019-12-07 12:27:14

问题


I have this code in Laravel 5.2 that checks if a given db table name ($what) has its own Model :

public function manage($what) {

    $model = Str::studly(Str::singular($what));
    if (!is_subclass_of($model, 'Model')) {
        \App::abort(404);
    }

    /* [... other stuff ...] */
}

The problem is that is_subclass_of always fail, also when the model exist and it's a subclass of Model. I suppose it's a namespace problem, how can I fix it?


回答1:


You may need the full namespace. When I do get_parent_class() on one of my models, it returns Illuminate\Database\Eloquent\Model. So use this instead:

$model = 'App\\' . Str::studly(Str::singular($what));
if (!is_subclass_of($model, 'Illuminate\Database\Eloquent\Model')) {



回答2:


You can check if your object is an instance of a model with instanceof:

$article = new \App\Article();

if ($article instanceof \Illuminate\Database\Eloquent\Model) {


来源:https://stackoverflow.com/questions/40766734/check-if-a-class-is-a-model-in-laravel-5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!