我创建了一个新的迁移(称为“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');
}
}
答案 0 :(得分:1)
如果你没有使用名称空间(你说你不是这样)并且你有两个同名的类 - 那就是你的问题。
所以在一个地方你有
class Tipo {}
这是您的迁移。在另一个地方你有
class Tipo extends Eloquent {}
这是你的模特。
但是这两个类都被称为Tipo
。
所以稍后,当你致电Tipo::all()
时 - Laravel不知道要拨打哪个班级,因为你有2x Tipo
。
您可以通过使用命名空间或将迁移重命名为TipoMigration
来解决此问题。