【发布时间】:2016-05-29 22:54:06
【问题描述】:
所以在 laravel 中我有一个 hasMany 关系,我们称之为水果。 用户只能在个人资料页面上拥有每种水果中的一种及其复选框。眼下 我有这个代码
if (!empty($data['fruits'])) {
$fruits = $data['fruits'];
foreach($user->fruits as $i) {
$i->delete();
}
for($a=0;$a<count($fruits);$a++)
{
$AT = new Fruits;
$AT->user_id=$user->id;
$AT->fruit_id=$fruits[$a];
$AT->save();
}
}
这样做是检查水果选择是否为空,如果不是,则删除与用户关联的现有水果并创建新水果。
这真的很丑吗,因为我觉得好像是。我不确定如何检查该用户的水果 ID 是否已经存在以及它是否确实创建了它。 任何帮助将不胜感激。
Schema::create('user_fruits', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('fruit_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
$table->foreign('fruit_id')->references('id')->on('fruits')->onUpdate('cascade')->onDelete('cascade');
$table->timestamps();
});
【问题讨论】:
-
你能分享你的表迁移用户和水果吗?您需要在 tablefruit 中搜索 user_id,如果它不存在则创建新的。
-
@Diego182 嘿,我已经添加了我的 user_fruits 表。
-
你是在使用数据透视表的方式来存储
hasMany关系吗?? -
@BashartheCoder 我上面提到的表是存储多关系的表,没有的fruits表只是存储水果id和水果名称,上表是保存id用户的,水果就是这样
-
我认为人们正在寻求深入研究。我只想知道一种简单的方法来引用我的 user_fruits 表,看看 $AT->fruit_id=$fruits[$a];与用户 ID 一起存在,否则我可能会留下它,因为我的意思是删除它们并在任何人保存用户配置文件时租用可能很糟糕