我是 Laravel 和 php 的新手,缺乏经验。我正在处理一个已经构建的项目,并且在 “SeminarController” 中存在无法修复的错误,这里是代码:
if(Input::has('relative_link_titles')){
$rldesc = Input::get('relative_link_titles');
$rllinks = Input::get('relative_link_urls');
$array = array_combine($rldesc,$rllinks);
while($ar = current($array)){
$val = Relative_PackageLinks::where('relpl_desc',key($array))->get();
if(empty($val[0])){
$newlink = new Relative_PackageLinks();
$newlink->relpl_desc = key($array);
$newlink->relpl_packageid = $id;
$newlink->relpl_link = current($array);
$newlink->save();
}
next($array);
}
$result = Relative_PackageLinks::whereNotIn('relpl_desc',$rldesc)->delete();
} else {
Relative_PackageLinks::where('relpl_packageid',$id)->delete();
}`
当我按下保存时,如果输入 'relative_link_titles' 具有相同的名称,它会清理所有表格,我不明白为什么,所以任何有 php 和 laravel 经验的人都会为回答这个问题提供很多帮助。谢谢大家!
从 Input::get() 返回的数组将是索引数组而不是关联数组。因此,当您执行
key($array)
时,它会传递 0、1、2 等,而不是输入的文本
此外,使用
while
会使情况变得混乱;更好用foreach
。
尝试一下这个,尽管如果没有对每个字段中保存的内容进行一些解释,很难确切地知道您要做什么。
$rldesc = Input::get('relative_link_titles');
$rllinks = Input::get('relative_link_urls');
$array = array_merge($rldesc, $rllinks);
foreach($array as $value) {
$val = Relative_PackageLinks::where('relpl_desc', $value)->first();
if(!$val) {
$newlink = new Relative_PackageLinks();
$newlink->relpl_desc = $value;
$newlink->relpl_packageid = $id;
$newlink->relpl_link = $value;
$newlink->save();
}
$result = Relative_PackageLinks::whereNotIn('relpl_desc',$rldesc)->delete();
这里是视图刀片,我也希望为我的项目中的每个研讨会提供这些输入,事实是,使用保存上面的代码,不要让相同的“描述链接”输入或删除所有表格(相关链接)
<table id="relative-links-output" class="table table-striped table-hover">
@foreach($relative_links as $rl)
<tr>
<td>{{ $rl->relpl_desc }}</td>
<td>{{ $rl->relpl_link }}</td>
<td class='col-md-1'><a href='#' class='remove-relative-link btn btn-danger'><i class='fa fa-minus'></i></a></td>
<input type="hidden" name="relative_link_titles[]" value="{{ $rl->relpl_desc }}">
<input type="hidden" name="relative_link_urls[]" value="{{ $rl->relpl_link }}">
</tr>
@endforeach
</table>
我做到了,这很简单,我只需将
where('relpl_packageid',$id)->
添加到 $result 和 $val,这样 while 循环每次都会检查特定的 $id