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

HasMany 关系在 Laravel 中不起作用

HasMany 关系在 Laravel 中不起作用

PHP
慕村225694 2022-05-27 16:46:15
我在 Laravel 项目中通过 php artisan make:auth 命令生成了注册表单。我想通过添加用户在注册时可以选择他/她的性别的功能来对其进行一些定制。我制作了具有性别列的性别表,其中包含两个值 Man 和 Woman,并且还在 users 表中添加了 gender_id 列。我有很多关系,但是当我尝试注册用户时,他已注册但 gender_id 列仍然为 NULL。我不知道错误在哪里。任何帮助表示赞赏。这是我的代码。<?phpnamespace App;use Illuminate\Contracts\Auth\MustVerifyEmail;use Illuminate\Foundation\Auth\User as Authenticatable;use Illuminate\Notifications\Notifiable;class User extends Authenticatable{    use Notifiable;    /**    * The attributes that are mass assignable.    *    * @var array    */    protected $fillable = [        'gender_id', 'name', 'email', 'password', 'age',    ];    /**    * The attributes that should be hidden for arrays.    *    * @var array    */    protected $hidden = [        'password', 'remember_token',    ];    /**    * The attributes that should be cast to native types.    *    * @var array    */    protected $casts = [        'email_verified_at' => 'datetime',    ];    public function genders()    {        return $this->belongsTo(Gender::class);    }}
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

如果列设置不正确,Eloquent 关系可能不起作用。


在迁移中,列的类型gender_id必须是unsignedBigInteger


我建议您也将User.php模型中的函数重命名gender为genders


我看到您gender_id在创建用户时使用:


$user = User::create([

            'genders_id' => $genders,

            'name' => $data['name'],

            'email' => $data['email'],

            'age' => $data['age'],

            'password' => Hash::make($data['password']),

]);

这实际上不起作用,因为 Laravel 将gender_id在表中搜索


如果你想保留 genders_id,你可以hasMany这样设置: return $this->hasMany(User::class, 'genders_id');


查看完整回答
反对 回复 2022-05-27
  • 1 回答
  • 0 关注
  • 166 浏览

添加回答

举报

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