繁体   English   中英

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

[英]Laravel5 - Non-static method should not be called statically

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

在我的UserController.php

class UserController extends Controller {
    public function viewCard($card_id) {
        return Tag::test($card_id);
    }
}

在我的模型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]);
    }
}

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

谢谢....

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]);
    }
}

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

$tag = new Tag();
$tag->test($card_id);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM