首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel5 -不应静态调用非静态方法

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

Stack Overflow用户
提问于 2015-11-26 21:52:08
回答 1查看 18.1K关注 0票数 4

我不知道这是什么错误。请谁给我解释一下

在我的UserController.php

代码语言:javascript
复制
class UserController extends Controller {
    public function viewCard($card_id) {
        return Tag::test($card_id);
    }
}

在我的模型Tag.php上

代码语言:javascript
复制
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]);
    }
}

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

谢谢……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-26 22:01:56

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

您有两个选择:

1)将你的方法设置为静态

代码语言:javascript
复制
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)首先实例化您的类,将其作为实例方法调用:

代码语言:javascript
复制
$tag = new Tag();
$tag->test($card_id);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33940427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档