【发布时间】:2020-05-15 05:34:23
【问题描述】:
我出现此错误:ErrorException (E_NOTICE) 数组到字符串的转换
这是我从输入发送数据的视图。
<div class="row">
@foreach ($candidates as $key => $candidate)
<input type="hidden" name="candidate_id[]" value="{{ $candidate->cdtid }}">
<div class="col-12 col-md-6 col-xl-4">
<div class="card">
<div class="card-body" style="background-image: url('{{ URL::asset('img/politicparties/' . $candidate->ppbgi) }}');">
<div class="form-group row">
<div class="col-md-6" style="text-align: left">
<img src="{{ URL::asset('img/politicparties/' . $candidate->ppimg) }}" alt="{{ $candidate->ppimg }}" width="40%" height="80%">
</div>
<div class="col-md-6" style="text-align: right">
<img src="{{ URL::asset('img/candidates/' . $candidate->cdtav) }}" alt="image" width="50%" height="100%">
</div>
</div>
<div class="form-group row">
<div class="col-md-12">
<h5 class="card-title">{{ $candidate->ppn }}</h5>
</div>
</div>
<div class="form-group row">
<div class="col-md-8">
<h5 class="card-title">{{ $candidate->cdtn }} {{ $candidate->cdtln }}</h5>
</div>
<div class="col-md-4">
<input type="number" class="form-control" id="InputNumber" name="total[]" value="0">
</div>
</div>
</div>
</div>
<br>
</div>
@endforeach
这是控制器中的方法。
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$candidates = CandidatePoliticParty::candidates()->orderBy('id', 'ASC')->get();
$procedings = ElectoralRecord::create([
'electoralprecint_id' => $request->get('electoralprecint_id'),
'user_id' => $request->get('user_id'),
]);
$inputs = $request->all();
foreach ($inputs as $key => $value) {
$votes = new VotingResult;
$votes->proceding_id = $procedings->id;
$votes->candidate_id = $request->input('candidate_id');
foreach ($candidates as $key => $candidate) {
$votes->politicparty_id = $candidate->id;
}
$votes->total = $request->input('total');
$votes->save();
};
}
这里我尝试存储记录id(proceding_id)、候选人id(candidate_id)、政党id(politicparty_id),以及表格中记录的值total(total)字段。
我提出的缺点是我没有正确地将数组转换为生成以下错误的字符串。
【问题讨论】:
-
这里有很多代码,是否都与特定问题相关,或者您可以将其缩小到导致问题的代码。
-
对于名称为
total[]的字段,$request->input('total')是什么?如果是这样,那是一个数组,可能会导致此问题。与candidate_id[]相同。还有很多没有意义的事情,比如循环遍历$inputs而不是(可能)循环遍历输入数组,例如total或candidate_id -
我理解并非常感谢您对@Nigel Ren 的观察,但我试图提供必要的信息来解释一下这个案例,以便它可以服务,以便您可以了解我想要做什么,所以你可以指导我一点,告诉我我在哪里犯了错误。
-
非常感谢@apokryfos 的观察,在这种情况下,我尝试发送一个数组,其中包含表单中每个候选人的值并将它们存储在数据库中以获得结果每个记录的值,我有点困惑,因为它应该构造将它们插入相应表的方式。
-
这里有很多可以改进的地方。太多了,无法对这个问题做出任何合理的答案(不是一个对其他人通常也有用的答案)。但突出的一件事是
user_id是一个隐藏字段。恶意用户可以只发送一个不同的 id,并且根本不会进行服务器端验证。您应该只在服务器端使用auth()->id()而不是传递隐藏字段。
标签: php laravel laravel-5.8