为什么laravel/eloquent找不到某个表?

问题描述 投票:0回答:2

我正在尝试从名为“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 laravel eloquent
2个回答
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;
}

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


0
投票

好吧,我发现我们有两个独立的数据库服务器,其中的数据“几乎”相同。两者都有同名的数据库和表,但其中一个缺少类别表。 当然,我毕竟从 Laravel 连接到了错误的服务器。 TL;DR:配置中的简单用户错误。

© www.soinside.com 2019 - 2024. All rights reserved.