如何使用laravel4从控制器访问模型


How can I access a model from a controller using laravel4?

如何使用laravel4从控制器访问模型?

到目前为止,我有我的控制器:

<?php
class GatewayController extends BaseController {
public function getContentAll()
{
    $content = Content::getContentAll();
    return $content;
}

我的型号:

<?php
class Content extends Eloquent {
    protected $table = '_content';
    public function getContentAll(){
        return 'test';
    }

但我得到了:

Whoops, looks like something went wrong.

首先,Eloquent处理模型集合的返回。你不需要自己处理。所以你的模型应该看起来像这样:

class Content extends Eloquent {
    protected $table = '_content';
}

然后你可以简单地使用以下内容获取所有内容:

$content = Content::all();

编辑:

如果你想对模型中的数据进行处理,可以试试这个:

class Content extends Eloquent {
    protected $table = '_content';
    public function modifiedCollection()
    {
        $allContent = self::all();
        $modifiedContent = array();
        foreach ($allContent as $content) {
            // do something to $content                  
            $modifiedContent[] = $content;
        }
        return $modifiedContent;
    }  
}

这应该会起作用:

$content = Content::modifiedCollection();

而不是这个:

$content = Content::getContentAll();

试试这个:

$content = Content->getContentAll();
                  ^^

或者将函数声明为static,如下所示:

public static function getContentAll(){
    return 'test';
}

UPDATE:如果你不想有static function,你应该实例化你的类,以便调用非静态函数:

$c = new Content();
$content = $c->getContentAll();