Laravel将类命名空间保存在变量或常量中

时间:2016-04-21 07:40:08

标签: php laravel constants

我已经实现了我的控制器:

class PayamAPIController extends Controller
{

    const THESIS = \App\Models\Thesis;


   public function getOffers($offerable)
     {
        // does not work
        $entities =  self::THESIS::where('user_id',\Auth::id())->get();
     }
}

这是我的控制器类的简化版本。

问题是我无法通过常量访问Thesis模型。

  PayamAPIController.php第27行中的

FatalErrorException:语法错误,意外' ::' (T_PAAMAYIM_NEKUDOTAYIM)

我需要将模型存储在常量或变量中,并在控制器方法中使用它们

4 个答案:

答案 0 :(得分:1)

如果必须使用常量,请尝试这样的

protected static $model ='App\Models\MyModel';
//in function
$model = (new static::$model)->where('id', $this->id)->firstOrFail();

或者像Claudio King提到的那样包括use Model

答案 1 :(得分:0)

无需创建常量,只需包含对外部类的引用,并使用'语句:

use \App\Models\Thesis;

class PayamAPIController extends Controller{
    $entities = Thesis::where('user_id',\Auth::id())->get();
}

答案 2 :(得分:0)

找到解决方案。只需在变量中对常量进行declate,然后调用它:

 $model =  self::THESIS;
 entities = $model::where('whatever')->get();

答案 3 :(得分:0)

您需要在变量中声明对 constant 的引用,然后调用它:

class SomeController extends Controller 
{
    protected const MODEL = SomeClass::class;

    public function doSomeThing()
    {
        $entities = (self::MODEL)::where('user_id',\Auth::id())->get();  
    }
}