我正在尝试使用laravel进行多级分类,但是我遇到此错误:如何解决此错误?
Illuminate \ Database \ QueryException
SQLSTATE [42S02]:基本表或视图 找不到:1146表'storykadb.category_navmenus'不存在 (SQL:从
category_navmenus
中选择*,其中p_id
= 0)
模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class category_navmenu extends Model
{
public function childs(){
return $this->hasMany('App\category_navmenu','p_id');
}
}
路线
Route::get('test',function(){
return App\category_navmenu::with('childs')->where('p_id',0)->get();
});
答案 0 :(得分:2)
Laravel Eloquent的表名错误,您可以根据Laravel的命名约定更改模型名称和表名,或者在模型中添加$table
属性,如下所示:
namespace App;
use Illuminate\Database\Eloquent\Model;
class category_navmenu extends Model
{
public $table = "category_navmenu";
public function childs(){
return $this->hasMany('App\category_navmenu','p_id');
}
}
答案 1 :(得分:1)
因为Laravel可以通过将类名更改为小写的下划线和复数来找到表。就像:
CategoryNavmenu
将成为category_navemenus
。
您没有指定受保护的$table
的表名。因此laravel会默认使用规则查找表。
您可以在模型中添加以下行:
protected $table = 'category_navemenu';
以便laravel可以找到您的桌子。
但是重要的是请您将您的班级名称更改为 Upper Camel Case 。这是正常的语法规范。
只需将模型文件名更改为CategoryNavmenu.php
,将类名更改为CategoryNavmenu
。