微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLSTATE[42S02]:未找到基本表或视图:1146 表 'tienda.productos' 不存在

如何解决SQLSTATE[42S02]:未找到基本表或视图:1146 表 'tienda.productos' 不存在

我曾尝试更改静态 $rules,但控制器代码对我不再适用。我也试过删除它,但我没有在表中插入记录。所以它允许,因为由于缺乏静态规则,我得到了另一个错误

sqlSTATE[42S02]:Base table or view not found: 1146 表 'tienda.productos' 不存在 (sql: 插入'productos'('nombre','Describcion','Clasificación')

Producto.PHP

class Producto extends Model
{
    use HasFactory;

    static $rules = [
        'nombre' => 'required','Describcion' => 'required','Clasificación' => 'required',];

    protected $filliable = ['nombre','Clasificación'];
}

迁移

class Productos extends Migration
{
    public function up()
    {
        Schema::create('producto',function (Blueprint $table) {
            $table->id();
            $table->string('nombre');
            $table->string('Describcion');
            $table->text('Clasificación');
            $table->timestamps();
        });
    }
}
    

但是我需要控制器的静态 $rules,因为我无法删除它。下面是控制器代码,您可以看到我使用的是静态 $rules

ProductoController

namespace App\Http\Controllers;
        
use App\Models\Producto;
use Illuminate\Http\Request;
    
    
class ProductoController extends Controller
{
     

这是 $rules 变量。

        public function store(Request $request)
        {
            request()->validate(Producto::$rules);
    
            $producto = Producto::create($request->all());
    
            return redirect()->route('productos.index')
                ->with('success','Producto created successfully.');
                return redirect()->route('productos.index2')
                ->with('success','Producto created successfully.');
        }
        

这是 $rules 变量。

        public function update(Request $request,Producto $producto)
        {
            request()->validate(Producto::$rules);
    
            $producto->update($request->all());
    
            return redirect()->route('productos.index')
                ->with('success','Producto updated successfully');
        }

非常感谢您的帮助,我会尽快回复,并对书面文字表示抱歉;我的英语说得或写得不好。

解决方法

根据laravel 文档,表名应该是模型名的复数。 https://laravel.com/docs/8.x/eloquent#table-names

如果你想为模型提供自定义表名,你可以按照模型中的代码进行操作。

受保护的 $table = 'producto';

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。