【问题标题】:I am trying to make Multi Level Category using laravel我正在尝试使用 laravel 制作多级类别
【发布时间】:2020-04-01 02:18:21
【问题描述】:

我正在尝试使用 laravel 制作多级类别,但我遇到了这个错误:如何修复这个错误?

照亮\数据库\查询异常

SQLSTATE[42S02]:基表或视图 未找到:1146 表“storykadb.category_navmenus”不存在 (SQL: select * from category_navmenus where 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();
});

【问题讨论】:

  • 请从 category_navmenu 重命名您的表 category_navmenus。它会自动解决您的问题。

标签: laravel


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    因为 Laravel 会通过将你的类名更改为小写下划线和复数来找到你的表格。就像: CategoryNavmenu 将变为 category_navemenus

    您没有指定受保护$table 的表名。所以 laravel 会按照默认规则查找表。

    你可以把这条线放在你的模型中:

      protected $table = 'category_navemenu';
    

    所以 laravel 可以找到你的表。

    但重要的是请将你的类名改为Upper Camel Case。这是正常的语法规范。

    只需将模型文件名更改为 CategoryNavmenu.php 并将类名更改为 CategoryNavmenu

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 2020-11-20
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      相关资源
      最近更新 更多