Я пытаюсь получить некоторые данные из таблицы под названием «категория», но laravel бросает
"SQLSTATE[42S02]: Base table or view not found" error.
Я пробовал с другими именами таблиц, такими как "Компания", и все работает отлично. Обе эти таблицы существуют, но ни одна из них не может быть найдена с тем же кодом.
Это вызывает ошибку:
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
хит композитор дамп-автозагрузка
Пожалуйста, покажите код модели вашей категории
Обе таблицы существуют в базе данных: картина @AkashKumarVerma
Я не использую модель ни для одной из этих таблиц, просто ищу прямо из БД с именем таблицы @LimKeanPhang
Вы должны создать модель и вставить защищенное место $table = 'category'; таким образом вы сможете выполнить свой запрос. Я предполагаю, что у вас есть имя таблицы, похожее на категорию
'composer dump-autoload' на меня не повлиял. @АкашКумарВерма
можешь показать мне полную ошибку






Создайте модель, если у вас ее нет. Добавьте следующее в вашу модель категории
<?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;
}
В настоящее время вы используете Query Builder, попробуйте использовать красноречивый способ.
Не действует на меня, я получаю ту же ошибку. сообщение об ошибке говорит мне, что оно ищет правильную таблицу из правильной базы данных. картина Полное сообщение об ошибке: «SQLSTATE[42S02]: базовая таблица или представление не найдено: 1146 Таблица XXXX.category не существует (SQL: выберите * из category)» XXXX — это имя базы данных, здесь нет опечаток или чего-либо еще, другие таблицы находятся в той же базе данных. Когда я запускаю команду sql (выберите * из category) для базы данных, она возвращает данные правильно
Хммм.. Попробуйте обновленный подход к ответу. Также проверьте env на подключение к базе данных.
php artisan config:clear , php artisan cache:clear , php artisan view:clear
«php artisan config:clear , php artisan cache:clear , php artisan view:clear» на меня не повлияло, я все равно получаю ту же ошибку.
Да, теперь у меня есть 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; } и модель категории: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Category extends Model { protected $table = 'category'; } @LimKeanPhang
Да, все та же ошибка: «SQLSTATE [42S02]: базовая таблица или представление не найдено: 1146 Таблица« XXXX.category »не существует (SQL: выберите * из category)»
Вы добавили приложение/модель/категорию? наверху
Вы когда-нибудь переименовывали или меняли файл миграции? :O Странно для этой ошибки..
Хм, я не думаю, что там есть что-то полезное. Я не использую drupal, и я могу найти таблицу категорий с помощью mysql workbench, чистый запрос sql pdo из другого места... @LimKeanPhang
Проверьте свой файл миграции на категорию и посмотрите, не пошло ли что-то не так внутри. Это последнее устранение неполадок, о котором я мог подумать.
База данных была создана до того, как я начал этот проект, и я вообще не трогал структуру, только добавил некоторые данные в другие таблицы. Поэтому я не использую миграции laravel.
Хорошо, я обнаружил, что у нас есть два отдельных сервера баз данных с идентичными данными почти в них. У обоих были базы данных и таблицы с одинаковыми именами, но в одном отсутствовала таблица категорий. Конечно, я все-таки подключился не к тому серверу из laravel.
Вкратце: простая ошибка пользователя в конфигурации.
Вот почему я советую вам проверить соединение в комментариях ранее. Думаю, я прав? Ты пропустил меня ??
Да, у меня была неверная информация о сервере. Для меня конфигурация выглядела нормально, и она была правильно настроена для подключения к серверу. Я мысль, чтобы быть правильным. Мы оба были правы?, хорошие советы!
проверьте имя вашей таблицы