猿问

Laravel:hasManyThrough 关系中的未知列“ìtem_size_id”

我正在尝试建立自己的电子商务商店作为 Laravel 培训,我与模型 Item、ItemOption、ItemSize 和 ItemColor 建立了 hasManyThrough 关系。当我使用虚拟数据播种数据库时出现问题,我收到以下错误:


SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ìtem_size_id' in 'field list' (SQL: insert into `item_options` (`item_id`, `item_color_id`, `ìtem_size_id`, `stock`) values (1, 1, 1, 10))

这是发生错误的种子文件:


<?php



use Illuminate\Database\Seeder;

use Carbon\Carbon;



class ItemOptionsSeeder extends Seeder

{



    public function run()

    {

        //blancas

        DB::table('item_options')->insert([ 'item_id' => 1, 'item_color_id' => 1, 'ìtem_size_id' => 1, 'stock' => 10 ]);

        //negras

        DB::table('item_options')->insert([ 'item_id' => 1, 'item_color_id' => 2, 'ìtem_size_id' => 2, 'stock' => 10 ]);

        //rojas

        DB::table('item_options')->insert([ 'item_id' => 1, 'item_color_id' => 3, 'ìtem_size_id' => 3, 'stock' => 10 ]);

        //verdes

        DB::table('item_options')->insert([ 'item_id' => 1, 'item_color_id' => 4, 'ìtem_size_id' => 4, 'stock' => 10 ]);


    }



}


我想我正确地设置了关系和模型,我似乎找不到我的代码有什么问题,让我们从我的模型开始,然后是迁移:


楷模:


<?php

namespace App\Models;



use Illuminate\Database\Eloquent\Model;



class Item extends Model

{



    protected $table = 'items';



    public function options()

    {

        return $this->hasMany(ItemOption::class);

    }


    public function sizes()

    {

        return $this->hasManyThrough(ItemSize::class, ItemOption::class, 'item_size_id', 'id');

    }


    public function colors()

    {

        return $this->hasManyThrough(ItemColor::class, ItemOption::class, 'item_color_id', 'id');

    }

}


猛跑小猪
浏览 132回答 2
2回答

茅侃侃

使用item_size_id而不是使用ìtem_size_id因为您的数据库字段名称是item_size_id所以只要改变它use Illuminate\Database\Seeder;use Carbon\Carbon;class ItemOptionsSeeder extends Seeder{public function run(){&nbsp; &nbsp; //blancas&nbsp; &nbsp; DB::table('item_options')->insert([ 'item_id' => 1, 'item_color_id' => 1, 'item_size_id' => 1, 'stock' => 10 ]);&nbsp; &nbsp; //negras&nbsp; &nbsp; DB::table('item_options')->insert([ 'item_id' => 1, 'item_color_id' => 2, 'item_size_id' => 2, 'stock' => 10 ]);&nbsp; &nbsp; //rojas&nbsp; &nbsp; DB::table('item_options')->insert([ 'item_id' => 1, 'item_color_id' => 3, 'item_size_id' => 3, 'stock' => 10 ]);&nbsp; &nbsp; //verdes&nbsp; &nbsp; DB::table('item_options')->insert([ 'item_id' => 1, 'item_color_id' => 4, 'item_size_id' => 4, 'stock' => 10 ]);}}

繁花不似锦

我希望这会有所帮助。在查看您的代码后,我看到您在 DBSeed 上的拼写错误。只需更改'ìtem_size_id'&nbsp;=>&nbsp;'item_size_id'。它会修复的。希望它有所帮助。谢谢
随时随地看视频慕课网APP
我要回答