Php Laravel在同一模型中调用一个函数

时间:2017-09-07 05:33:08

标签: php laravel laravel-5

我有一个有2个功能的模型。我们假设该模型的名称为Cars。我试图调用一个返回数组的函数brand,以便我可以在另一个getBrand函数中使用它。

public static function getBrand($data) {
    $brandVariable = $this->brand(); 
    for ($i=1; $i < count($brandVariable ) ; $i++) { 
        //do something
    }
}

public static function brand() {
    $arrayValues = array(
         1 => 'Brand A',
         2 => 'Brand B',
    );
    return arrayValues;
}

由于值在brand函数中,我需要在getBrand内传递。

我在for循环中收到错误。我尝试了另一个文件(本地PHP而不是Laravel),它运行正常。但是在Laravel,它没有得到预期的结果。

3 个答案:

答案 0 :(得分:6)

使用Cars::brand因为您将函数声明为静态

public static function getBrand($data=null) {
    $Cars = new Cars();
    $brandVariable = $Cars::brand(); 
    for ($i=1; $i < count($brandVariable ) ; $i++) { 
        //do something
    }
}

现场演示:https://eval.in/856708

public static function getBrand($data=null) {
    $brandVariable = Cars::brand(); 
    for ($i=1; $i < count($brandVariable ) ; $i++) { 
        //do something
    }
}

现场演示:https://eval.in/856712

答案 1 :(得分:2)

您在静态函数内调用brand$this在声明为static的方法中不可用。

由于brand被声明为静态函数,您可以使用以下方法之一来调用函数

如果在课堂内

self::brand();

static::brand();

来自课外

ClassName::brand();

答案 2 :(得分:2)

这些函数是静态的,所以你应该使用

self::brand()

而不是

$this->brand()