2017-05-29 33 views
1

所以我想知道我們如何可以訪問它被放置在一個變量型號意外 '::'

控制器型號:

use App\Models\Test; 
use App\Models\Owner; 
class mainController extends Controller { 

    public function __construct() 
    { 
     $this->home = new MainHelper(); 
    } 

mainHelper.php:

class MainHelper { 
    var $test  = 'App\Models\Test'; 
    ... 
    public static function listTesting(){ 
     $data = $this->test::where('icons_status', '=', 'active')->orderBy('created_at', 'desc')->take(5)->get(); 
     return $data; 
    } 

test.php的

<?php 
namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class Test extends Model 
{ 
    protected $table = 'test'; 
    protected $primaryKey = "id"; 
    protected $guarded = array('id'); 
    public $timestamps = false; 
} 

但我得到這個錯誤

Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM) in C:\xampp\htdocs\laravel\app\Helpers\MainHelper.php on line 34 

或者我做錯了嗎?我試圖找到一種方法,而無需使用use App\Model\Test

+0

在第一次看,我發現一個錯字在mainHelper .php:$ data = $ this-> test :::: where('icons_status','=','active') - > orderBy('created_at','desc') - > take(5) - > get (); $ this-> test ::::其中必須是$ this-> test ::其中,但我不知道它會起作用或不是:) –

+0

@MamikonArakelyan固定但它仍然發生 – fully

+0

錯誤是否一樣? –

回答

0

首先,你爲什麼要到模型分配到一個變量?所有的二,在這條線:

var $test  = 'App\Models\Test'; 

要分配一個字符串,而不是一個模型,所以顯然不會像你期望的那樣工作。

你可以做的是:

var $test  = new App\Models\Test; 

然後用

var $test->where(....) 

或做在同一個指令:

$data = App\Models\Test::where('icons_status', '=', 'active')->orderBy('created_at', 'desc')->take(5)->get(); 
return $data; 
0

改變這一點:

$this->test::where 

到:

$this->test->where 
0

首先,你想通過$這種從靜態方法訪問,非靜態字段必須是這樣的

class MainHelper 
{ 
    public static $test = 'App\Models\Test'; 

    public static function listTesting() 
    { 
     $data = self::$test::where('icons_status', '=', 'active')->orderBy('created_at', 'desc')->take(5)->get(); 
     return $data; 
    } 
}