首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理不需要外键字段,有时可能被忽略的laravel中的关系

问如何处理不需要外键字段,有时可能被忽略的laravel中的关系
EN

Stack Overflow用户
提问于 2014-04-06 20:44:26
回答 3查看 2.5K关注 0票数 1

请注意,我使用的是Mysql,其中在外键字段中不允许使用null。

假设有一个表,用户,其字段名为mypic_id、familypic_id、carpic_id和housepic_id。

还有一个用于图像、图片、字段id、title、filename和path的表。

字段mypic_id、familypic_id、carpic_id和housepic_id可能会在晚些时候添加,也可能不会为每个用户添加。

每个*pic_id字段都通过用户模型中的hasOne (一-1)与图片记录相关联。

当我从User表添加/更新记录时,我得到以下错误: SQLSTATE23000:完整性约束违反: 1452不能添加或更新子行:外键约束失败.

我如何使用雄辩/ Laravel 4来克服这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-07 14:54:30

我认为您在MySQL外键字段中不能有空值,这是错误的。我将MySQL与许多定期存储空值的外键字段一起使用。我建议您查看外部性id字段的定义,看看是否将其设置为NULL。如果您将其更改为默认NULL,则应该可以选择。

票数 1
EN

Stack Overflow用户

发布于 2014-04-06 21:01:08

雄辩的关系不需要数据库端的外键约束,所以您可以简单地删除这些约束,这样就可以工作了。

不过,请注意,您必须担心更新/删除相关表中的条目,因为MySQL对此一无所知,您将无法在UPDATE和DELETE操作上设置。

票数 0
EN

Stack Overflow用户

发布于 2014-04-07 15:21:37

你需要提前计划,如果你在未来添加其他图片的话,现在建立这种关系会更好。

与图片有1到多的关系,并在桌面上有pictureType字段。然后,您可以将作用域添加到您的图片类中,并得到所需的精确范围。

DB结构

用户

身份证名字..。

图片

id,users_id,picData,类型(枚举或链接到另一个表),.

文件

您的Users.php将具有以下关系

代码语言:javascript
复制
public function pics()
{
    return $this->hasMany('pics',users_id);
}

在您的Pics.php中,您可以添加关系和作用域,例如

代码语言:javascript
复制
public function user()
{
    return $this->belongsTo('Users');
}

public function scopeType($query,$type)
{
    return $query->where('type', '=', $type);
}

这将允许您通过调用获取您现在拥有的任何图片或任何未来的图片。

代码语言:javascript
复制
User::find(1)->pics()->type('myPic')->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22899786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档