Вопрос

Я начал изучать Laravel и бежал в проблему с использованием моделей.Как загрузить их?Например, в CodeCigniter I использовал его как $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= сайты :: outfuser ($ Query);

И если вы хотите нормально, как Codewinger, затем используйте--

$ model= новые сайты ();
$ type= $ model-> scopeofuser ($ query);

Другие советы

Вы можете, конечно, сделать статический метод в модели и выполнять некоторые статические работы в нем (получить удостоверение личности для имени или что-то еще).

Это не проблема.

Тем не менее, вы должны объявить его статичным, если вы хотите использовать ::, который вы не делаете.

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

Если вы хотите получить доступ к способу с помощью ::, вам нужно будет сделать его статический метод или создать фасад

Причина, по которой Sites::OfUser() «работает», потому что вы префиксировали этот метод с scope.

СКОРЕТЫ позволяют легко повторно использовать логику запросов в ваших моделях.К Определите область применения, просто префикс метод модели с помощью scope.

Если вы хотите использовать фасады, вы можете следить за моим ответом здесь на то, как создать фасад.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top