为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
猛跑小猪 2022-10-09 17:29:27
我正在尝试建立自己的电子商务商店作为 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))这是发生错误的种子文件:<?phpuse 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 ]);    }}我想我正确地设置了关系和模型,我似乎找不到我的代码有什么问题,让我们从我的模型开始,然后是迁移:楷模:<?phpnamespace 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');    }}
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

使用item_size_id而不是使用ìtem_size_id


因为您的数据库字段名称是item_size_id


所以只要改变它


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, 'item_size_id' => 1, 'stock' => 10 ]);

    //negras

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

    //rojas

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

    //verdes

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


}



}


查看完整回答
反对 回复 2022-10-09
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

我希望这会有所帮助。在查看您的代码后,我看到您在 DBSeed 上的拼写错误。只需更改'ìtem_size_id' => 'item_size_id'。它会修复的。

希望它有所帮助。谢谢


查看完整回答
反对 回复 2022-10-09
  • 2 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信