在Laravel上访问控制器中模型的正确方法是什么

时间:2013-06-01 10:15:54

标签: php laravel laravel-4

我是Laravel 4的新手,我正在努力理解它。

在谷歌和stackoverflow上搜索

。也许我不是在寻找正确的语法,但我希望有人可以用它来帮助我。

在CodeIgniter我理解它(可能)。我在控制器中使用:

function __construct()
{ $this->load->model('example_m'); }

但是在Laravel 4中怎么样?

我想出了以下内容:

我在de model中创建一个静态函数,所以我可以随处访问它。例如:

class Example extends Eloquent // this is the model
{ 
   public static function TestExample(){
      // do some stuff here
   }
}

或者我可以这样做:

class ExampleController extends BaseController
{
   public $test = null;
   public function __construct()
   {
      $this->test = new Example();
   }
   public function index()
   {
      $this->test->TestExample();
   }
}

我的问题是:还有其他方法和/或正确的方法吗?

2 个答案:

答案 0 :(得分:5)

http://four.laravel.com/docs/ioc

App::bind('ExampleModelInterface', 'Example');

class ExampleController extends BaseController {
    public function __construct(ExampleModelInterface $model)
    {
        $this->model = $model;
    }
}

答案 1 :(得分:1)

您的意思是简单地访问模型的方法吗?

因为它们是静态的,所以你使用:Modell :: method()

你可能不得不做一个composer dump-autoload,所以L4正确地自动加载它。