欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

数据表一对一关联问题

程序员文章站 2022-05-08 15:22:52
...
class User extends Authenticatable
{
    public function profile()
    {
        return $this->hasOne(Profile::class);
    }

}
class Profile extends Model
    public function user()
    {
        return $this->belongsTo(User::class);
    }
    }

上面是一张user表和profile表的Model,两张表一对一关系,当用户登录后,可以创建他的profile,然后提交。
可是,第二次访问这个创建profile的表单页,也能提交成功,这哪里是一对一,这不是一对多么!是哪里有错,还是模型中进行一对一关联后,要保证profile只有一条记录,在控制器中还要进行判断?

回复内容:

class User extends Authenticatable
{
    public function profile()
    {
        return $this->hasOne(Profile::class);
    }

}
class Profile extends Model
    public function user()
    {
        return $this->belongsTo(User::class);
    }
    }

上面是一张user表和profile表的Model,两张表一对一关系,当用户登录后,可以创建他的profile,然后提交。
可是,第二次访问这个创建profile的表单页,也能提交成功,这哪里是一对一,这不是一对多么!是哪里有错,还是模型中进行一对一关联后,要保证profile只有一条记录,在控制器中还要进行判断?

要是能创建多个,那就不是一对一了呗
数据库是人设计的,又不是死的,需求是什么样的就设计成什么样的,如果是一对一,那就不能提交两个,如果能提交多个,那就是一对多

提交后是重新覆盖那一条数据就可以一对一咯。

首先查库看是否在profile已经有 该用户的记录了,如果有则update 更新 否则 insert插入记录

这个是你业务设计的问题,你需要在业务中去控制,如果出现了不符合一对一的情况,可以认为出现了数据不一致。

相关标签: php laravel mysql