我正在尝试使用laravel进行多级别分类

时间:2019-12-07 08:06:45

标签: laravel

我正在尝试使用laravel进行多级分类,但是我遇到此错误:如何解决此错误?

  

Illuminate \ Database \ QueryException

     

SQLSTATE [42S02]:基本表或视图   找不到:1146表'storykadb.category_navmenus'不存在   (SQL:从category_navmenus中选择*,其中p_id = 0)

enter image description here

模型

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();
});

2 个答案:

答案 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