laravel /雄辩为什么找不到某些表?

时间:2019-04-04 09:24:04

标签: laravel eloquent

我正在尝试从称为“类别”的表中获取一些数据,但是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

2 个答案:

答案 0 :(得分:0)

如果没有模型,请创建一个模型。将以下内容添加到您的类别模型中

<?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;
}

您当前正在使用查询生成器,请尝试使用雄辩的方式。

答案 1 :(得分:0)

好吧,我发现我们有两个单独的数据库服务器,它们中的数据几乎相同。两者都有名称相同的数据库和表,但其中一个缺少类别表。 当然,毕竟我是从laravel连接到错误的服务器的。

TL; DR:简单的用户配置错误。