Как загрузить модели в Laravel?
-
21-12-2019 - |
Вопрос
Я начал изучать 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
.
Если вы хотите использовать фасады, вы можете следить за моим ответом здесь на то, как создать фасад.