Why I#39;m getting #39;Non-static method should not be called statically#39; when invoking a method in a Eloquent model?(为什么在调用 Eloquent 模型中的方法时出现“不应静态调用非静态方法?)
问题描述
我试图在我的控制器中加载我的模型并尝试了这个:
Im trying to load my model in my controller and tried this:
return Post::getAll();
得到错误 非静态方法 Post::getAll() 不应静态调用,假设 $this 来自不兼容的上下文
模型中的函数如下所示:
The function in the model looks like this:
public function getAll()
{
return $posts = $this->all()->take(2)->get();
}
在控制器中加载模型然后返回其内容的正确方法是什么?
What's the correct way to load the model in a controller and then return it's contents?
推荐答案
您已将方法定义为非静态方法,而您正试图以静态方式调用它.话说……
You defined your method as non-static and you are trying to invoke it as static. That said...
1.如果你想调用一个静态方法,你应该使用::
并将你的方法定义为静态.
1.if you want to invoke a static method, you should use the ::
and define your method as static.
// Defining a static method in a Foo class.
public static function getAll() { /* code */ }
// Invoking that static method
Foo::getAll();
2.否则,如果你想调用一个实例方法,你应该实例化你的类,使用->
.
2.otherwise, if you want to invoke an instance method you should instance your class, use ->
.
// Defining a non-static method in a Foo class.
public function getAll() { /* code */ }
// Invoking that non-static method.
$foo = new Foo();
$foo->getAll();
注意:在 Laravel 中,几乎所有 Eloquent 方法都返回模型的一个实例,允许您按如下所示链接方法:
Note: In Laravel, almost all Eloquent methods return an instance of your model, allowing you to chain methods as shown below:
$foos = Foo::all()->take(10)->get();
在该代码中,我们通过 Facade 静态调用 all
方法.之后,所有其他方法都被称为实例方法.
In that code we are statically calling the all
method via Facade. After that, all other methods are being called as instance methods.
这篇关于为什么在调用 Eloquent 模型中的方法时出现“不应静态调用非静态方法"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么在调用 Eloquent 模型中的方法时出现“不应静态调用非静态方法"?
基础教程推荐
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- HTTP 与 FTP 上传 2021-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01