我开始研究 Laravel 并在使用模型时遇到了问题。如何加载它们?例如在 CodeIgniter 中我使用它 $model = $this->load->model('some_model'). 。在 Laravel 中,当我从控制器调用它时,就像 Sites::OfUser() 它工作正常,但是当我打电话时 Sites::getId() 它说该方法应该是静态的......是否可以在没有静态的情况下调用方法,或者我需要为每个模型创建外观?

我的模型如下所示:

namespace Models;

use Eloquent;

class Sites extends Eloquent {

    public function scopeOfUser($query)
    {}

    public function getId($name)
    {}
}
有帮助吗?

解决方案

对于静态方法--

$type = 站点::scopeOfUser($query);

如果你想要正常的像 codeingiter 那么使用 -

$model = 新站点 ();
$type = $model->scopeOfUser($query);

其他提示

当然,您可以在模型中创建一个静态方法,并在其中执行一些静态工作(获取名称或其他 ID)。

那没问题。

但是,如果您想使用,则必须将其声明为静态 ::, ,而你却没有这样做。

public static /* <-- this */ function getId($name)
{
    // Do work
    // return $result;
}

如果你想访问一个方法 ::, ,您需要将其设为静态方法或创建一个 正面.

之所以 Sites::OfUser() 是“工作”是因为你已经在该方法前面加上了前缀 scope.

范围 允许您轻松地在模型中重用查询逻辑。要定义范围,只需将模型方法的前缀带有 scope.

如果你想使用 Facades 可以关注我的回答 这里 关于如何创建外观。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top