Laravel5 - 非静态方法不应静态调用

Sto*_*rit 5 php laravel-5

我不知道这个错误是什么。请有人给我一些解释

在我的UserController.php

class UserController extends Controller {
    public function viewCard($card_id) {
        return Tag::test($card_id);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的模型上Tag.php

class Tag extends Model {
    public function test($card_id){
        return DB::SELECT(DB::RAW("SELECT name FROM tagmap tm, tags t WHERE t.id = tm.tag_id AND tm.card_id = :card_id"), ['card_id'=>$card_id]);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道哪里失败了,哪里做错了......

谢谢....

Pis*_*hio 3

public function test()不是静态方法。当您尝试访问静态方法时,Tag::test()它将失败,因为......该方法不是静态的。

您有两个选择:

1)将方法设置为静态

class Tag extends Model {
    public static function test($card_id){
        return DB::SELECT(DB::RAW("SELECT name FROM tagmap tm, tags t WHERE t.id = tm.tag_id AND tm.card_id = :card_id"), ['card_id'=>$card_id]);
    }
}
Run Code Online (Sandbox Code Playgroud)

2)首先实例化您的类,将其作为实例方法调用:

$tag = new Tag();
$tag->test($card_id);
Run Code Online (Sandbox Code Playgroud)