我正在尝试从名为“category”的表中获取一些数据,但是 laravel 抛出了
“SQLSTATE[42S02]:未找到基表或视图”错误。
我尝试过使用其他表名称,例如“company”,并且效果很好。这两个表都存在,但使用相同的代码找不到其中一个。
这会引发错误:
public static function getCategories()
{
$categories = [];
$cat = DB::table('category')->get();
if (isset($cat)){
foreach ($cat as $category_name){
array_push($categories, $category_name);
}
return json_encode($categories);
}
return null;
}
这按预期工作(除了表名称字符串之外的代码相同):
public static function getCategories()
{
$categories = [];
$cat = DB::table('company')->get(); //table name changed
if (isset($cat)){
foreach ($cat as $category_name){
array_push($categories, $category_name);
}
return json_encode($categories);
}
return null;
}
这两个表之间的唯一区别是表排序规则:
公司:utf8_general_ci
类别:utf8mb4_swedish_ci
如果没有模型,请创建一个模型。将以下内容添加到您的类别模型中
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'category';
}
控制器
public static function getCategories()
{
$categories = [];
$cat = Category::all();
if (isset($cat)){
foreach ($cat as $category_name){
array_push($categories, $category_name);
}
return json_encode($categories);
}
return null;
}
您当前正在使用查询生成器,请尝试使用雄辩的方式。
好吧,我发现我们有两个独立的数据库服务器,其中的数据“几乎”相同。两者都有同名的数据库和表,但其中一个缺少类别表。 当然,我毕竟从 Laravel 连接到了错误的服务器。 TL;DR:配置中的简单用户错误。