2017-05-29 72 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; 
    } 
}