我在删除项目中的数据时出现问题。 我有两个没有任何关系的表数据库
表格的表格
Schema::create('forms', function (Blueprint $table) {
$table->increments('id');
$table->string('FormName', 200);
$table->string('GroupID', 100)->nullable();
$table->integer('EditorType');
$table->integer('LanguageID')->nullable()->default(1);
$table->integer('PageTemplateID')->nullable();
$table->integer('GadgetID')->nullable();
$table->string('Categories', 200)->nullable();
$table->timestamps();
});
内容设置表
Schema::create('content_settings', function (Blueprint $table) {
$table->increments('id');
$table->integer('language_id');
$table->integer('gadget_id');
$table->string('ContentSettingName', 100);
$table->text('ContentSettingValue');
$table->timestamps();
});
控制器
public function destroy($id)
{
$form = Form::findOrFail($id);
$pages = Form::where('GroupID', $form->GroupID)->get()->pluck('id')->toArray();
$homepage = ContentSetting::where('language_id', $form->LanguageID)
->where('gadget_id', $form->GadgetID)
->where('ContentSettingValue', $form->id)
->pluck('ContentSettingValue')->first();
if(!in_array($homepage, $pages)){
$deletePages = Form::where('GroupID', $form->GroupID)->delete();
}
return response()->json($homepage);
}
当我将数据存储到数据库中时,我将直接存储2行数据。因为在我的表格中,我有列语言ID,而且2行数据具有相同的GroupID。问题是当我想要删除数据时。
forms.id
与content_settings.ContentSettingValue
相关联。因此,当我存储数据时,我可以选择其中一个数据为default homepage
。如果我点击删除按钮到默认主页的数据,它会发出警告('你不能删除默认主页'),但如果我点击删除按钮到数据不是默认主页,但它有相同的具有默认主页的GroupID。它将删除两行数据(换句话说,默认主页也将被删除)。如果我检查其中一个数据是默认主页而另一个数据不是默认主页,但是它们具有相同的GroupID,我怎么能处理它,我不能删除它们。
答案 0 :(得分:0)
您只需使用$ id删除应在参数中提供的行。 根据我的理解,destroy函数提供了一个id来检查它是否可删除。如果不是默认值,该功能将执行删除,如果是默认主页,则不执行删除操作。所以只需使用id删除:
public function destroy($id)
{
$form = Form::findOrFail($id);
$pages = Form::where('GroupID', $form->GroupID)->get()->pluck('id')->toArray();
$homepage = ContentSetting::where('language_id', $form->LanguageID)
->where('gadget_id', $form->GadgetID)
->where('ContentSettingValue', $form->id)
->pluck('ContentSettingValue')->first();
if(!in_array($homepage, $pages)){
$deletePages = Form::whereId($id)->delete();
}
return response()->json($homepage);
}
答案 1 :(得分:0)
这是我找到的答案,如果你有最简单的答案或最简短的方法。请在此处添加您的答案,它可以帮助其他有相同问题的人;)
public function destroy($id)
{
$form = Form::findOrFail($id);
$pages = Form::where('GroupID', $form->GroupID)->get()->pluck('id');
$homepage = ContentSetting::whereIn('ContentSettingValue', $pages)
->count();
if($homepage < 1){
$deletePages = Form::where('GroupID', $form->GroupID)->delete();
}
return response()->json($homepage);
}