Я пытаюсь добавить категорию в дБ, используя следующий код, но он показывает ошибку типа «SQLSTATE [42S02]: базовая таблица или представление не найдены: 1146 Таблица« mydb.categories »не существует (SQL: вставить в { Значения {X0}} (category_name, updated_at, created_at) (мода, 13 марта 2018 г. 09:44:38, 13 марта 2018 г. 09:44:38)) "

Мои коды следующие

Контроллер администратора

<?php

namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Category;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Auth;

class AdminController extends Controller
{
    public function show()
    {
       return view('admin/admin');

      // echo "here";
    }

    public function addCategory()
    {
        $category=new Category;
        $category->category_name = Input::get('category');

        $category->save();
        dd("2");

        //return view('admin');
    }

}

Admin.blade.php

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <style>
        .bod{
            background-color:#f8f8f8;
            border-shadow: 5px 10px 20px white inset;
            border-width:5px;
            margin-top:-12px;
        }
        .h1{
            font-family:"Book Antiqua";
            font-size: 90px;
            color: red;
            text-align: center;
        }
        div {
            border-radius: 5px;
            /*background-color: #f2f2f2;*/
            /*background-color: #7CA8C1  ;*/
            padding: 20px;
            position: relative;
            /*border:2px solid white;*/
            height: 200px;
            width: 50%;
        }
    </style>
</head>
<body class="bod">
<h1 class="h1">Admin</h1>
<div align="left">
    <form action="{{ route('addCategory') }}" method="get">
        {{ csrf_field() }}
        <label for="category" style="font-family: 'Book Antiqua';font-size: 48px">Category</label> <br/>
        <input type="text" name="category" id="category" placeholder="Enter the Category" style="width: 25%;height:35px; border:2px solid floralwhite">
        <input type="submit" name="add" id="add" value="ADD">
    </form>
</div>
</body>
</html>

Маршрутизации

Route::get('/addCategory','Admin\AdminController@addCategory')->name('addCategory');

Модель категории

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    //

    protected $fillable = [
        'category_name',
    ];

}

Структура db

-- phpMyAdmin SQL Dump
-- version 4.7.4
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3306
-- Generation Time: Mar 13, 2018 at 10:12 AM
-- Server version: 5.7.19
-- PHP Version: 5.6.31

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `mydb`
--

-- --------------------------------------------------------

--
-- Table structure for table `category`
--

DROP TABLE IF EXISTS `category`;
CREATE TABLE IF NOT EXISTS `category` (
  `category_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `category_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
1
vst 13 Мар 2018 в 12:52

2 ответа

Лучший ответ

Добавьте это к вашей модели

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
    //
    protected $table = "category";
    protected $fillable = [
        'category_name',
    ];
}

Имя вашей таблицы - это категория, и laravel считает, что в своих категориях вы должны использовать миграции db для создания таблиц базы данных, которые помогут вам избежать этих ошибок.

1
Jigs1212 13 Мар 2018 в 10:25

Вы должны указать имя таблицы в модели.

protected $table = "Categories";
-1
Dhaval Panchal 13 Мар 2018 в 10:06