在laravel中,我有一个hasMany关系,我们称之为fruits。用户只能拥有每种水果的一个,并且在个人资料页面上是一个复选框。目前我有以下代码:
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();
}
}
这段代码的作用是检查水果选择是否为空,如果不为空,则删除与用户相关联的现有水果并创建新的水果。
我觉得这段代码有点丑陋,因为我不确定如何检查该用户是否已存在相应的水果,如果不存在则创建。
如有需要,请提出建议。
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();
});
hasMany
关系? - Md Nozibulla Bashar