调用未定义的方法Tipo :: orderBy()Laravel 4

时间:2014-07-17 12:11:48

标签: php laravel laravel-4

我创建了一个新的迁移(称为“tipo”)及其模型和控制器。而且我也创建了它的视图......我的确完全按照以前的方式完成。事实上,我已经复制并粘贴了大部分代码。其他一切都很完美。

但是当我想访问我的'tipo / index'时,我收到了下一条消息:

Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_ERROR)

Call to undefined method Tipo::orderBy()

我已经阅读了一些可能的解决方案,而且我已经更新了我的控制器。我也有同样的错误...... Argggg !!!

MY CONTROLLER:TipoController.php

class TipoController extends AdminController {

    /**
     * Display a listing of the resource.
     * GET /tipo
     *
     * @return Response
     */
    public function index()
    {
        $tipos = Tipo::orderBy('created_at', 'DESC')->paginate(10);
        return View::make('tipos.index')->with('tipos', $tipos);
    }

    /**
     * Show the form for creating a new resource.
     * GET /tipo/create
     *
     * @return Response
     */
    public function create()
    {
        return View::make('tipos.create');
    }

    /**
     * Store a newly created resource in storage.
     * POST /tipo
     *
     * @return Response
     */
    public function store()
    {
        $input = Input::all();
        // var_dump($input);

        $v = Validator::make($input, Tipo::$rules);

        if ($v->passes()) {

            $tipo = new tipo;
            $tipo->nombre = Input::get('nombre');
            $tipo->descripcion = Input::get('descripcion');
            $tipo->m_desc = Input::get('m_desc');
            $tipo->slug = Str::slug(Input::get('nombre'));
            $tipo->user_id = Sentry::getUser()->id;
            $tipo->save();

            // return $tipo->user_id;

            return Redirect::route('tipos.index');
        }

        return Redirect::back()->withErrors($v);
    }

    /**
     * Display the specified resource.
     * GET /tipo/{id}
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id)
    {
        $tipo = Tipo::where('slug', $id)->first();

        $date = $tipo->created_at;
        setlocale(LC_TIME, 'Europe/Madrid');
        $date = $date->formatlocalized('%A %d %B %Y');

        return View::make('tipos.show')->with('tipo', $tipo)->with('date', $date);
    }

    public function myShow($id, $slug)
    {
        $tipo = Tipo::where('id', $id)->first();

        $date = $tipo->created_at;
        setlocale(LC_TIME, 'Europe/Madrid');
        $date = $date->formatlocalized('%A %d %B %Y');

        return View::make('tipos.show')->with('tipo', $tipo)->with('date', $date);
    }

    /**
     * Show the form for editing the specified resource.
     * GET /tipo/{id}/edit
     *
     * @param  int  $id
     * @return Response
     */
    public function edit($id)
    {
        $tipo = Tipo::where('id', $id)->first();

        $date = $tipo->created_at;
        setlocale(LC_TIME, 'Europe/Madrid');
        $date = $date->formatlocalized('%A %d %B %Y');

        return View::make('tipos.edit')->with('tipo', $tipo)->with('date', $date);
    }

    /**
     * Update the specified resource in storage.
     * PUT /tipo/{id}
     *
     * @param  int  $id
     * @return Response
     */
    public function update($id)
    {
        $input = array_except(Input::all(), '_method');

        $v = Validator::make($input, Tipo::$rules);

        if($v->passes())
        {
            Tipo::find($id)->update($input);
            return Redirect::route('tipos.index');
        }

        return Redirect::back()->withErrors($v);
    }

    /**
     * Remove the specified resource from storage.
     * DELETE /tipo/{id}
     *
     * @param  int  $id
     * @return Response
     */
    public function destroy($id)
    {
        Tipo::find($id)->delete();

        return Redirect::route('tipos.index');
    }

}

我的模特:Tipo.php

class Tipo extends Eloquent {
    protected $guarded = array();

    public static $rules = array(
        'nombre' => 'required',
        );

    public function user()
    {
        return $this->belongsTo('User', 'user_id');
    }
}

1 个答案:

答案 0 :(得分:1)

如果你没有使用名称空间(你说你不是这样)并且你有两个同名的类 - 那就是你的问题。

所以在一个地方你有

class Tipo {}

这是您的迁移。在另一个地方你有

class Tipo extends Eloquent {}

这是你的模特。

但是这两个类都被称为Tipo

所以稍后,当你致电Tipo::all()时 - Laravel不知道要拨打哪个班级,因为你有2x Tipo

您可以通过使用命名空间或将迁移重命名为TipoMigration来解决此问题。