我正在尝试制作一个简单的表单,让用户在表单中键入多个“isbn”条目。提交后,每个字段都应在数据库中输入新记录,包括输入的isbn和登录用户的ID。我尝试了很多搜索,但没有提到的解决方案对我有用。
控制器:
首先,我测试了下面的代码,以确保它捕获了id和输入的isbn,但当然我给它添加了一个user_id来插入,这不是我想要的 -
public function wanted(Request $request)
{
$uid = Auth::user()->id;
$booklist = Input::get('isbn');
foreach($booklist as $onebook) {
\DB::insert('insert into wantedbooks (isbn,user_id) values(?,2)', array($onebook));
}
return response("submitted for user ID: " . $uid);
}
一旦我确认捕获了该信息,我就尝试了以下内容 -
Controller(导致数组到字符串转换错误):
public function wanted(Request $request)
{
$uid = Auth::user()->id;
$booklist = Input::get('isbn');
foreach($booklist as $onebook) {
\DB::insert('insert into wantedbooks (isbn,user_id) values(?,?)', [array($onebook),$uid)];
}
return response("submitted for user ID: " . $uid);
}
视图中的表格:
<form action='wanted' method='POST'>
<div class='form-group'>
<input type="text" name="isbn[]" placeholder="enter isbn...">
<input type="text" name="isbn[]" placeholder="enter isbn...">
<input type="text" name="isbn[]" placeholder="enter isbn...">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button type="submit" id="submit" class="btn btn-default">Add books</button>
我老老实实地忘记了我尝试过的东西,但这些是我认为我记得很准确的东西。关于我做错了什么的任何建议或信息?我是一个初学者,因为我现在肯定很明显。
编辑: 工作代码,但允许空白字段仍然会产生错误
public function wanted(Request $request)
{
$uid = Auth::user()->id;
$booklist = Input::get('isbn');
foreach($booklist as $onebook) {
if($onebook === '') continue;
DB::table('wantedbooks')->insert(['isbn' => $onebook, 'user_id' => $uid]);
}
return response("submitted for user ID: " . $uid);
}
答案 0 :(得分:1)
将array($onebook)
替换为$onebook
,不要编写原始SQL:
DB::table('wantedbooks')->insert(['isbn' => $onebook, 'user_id' => $uid]);
答案 1 :(得分:0)
我会建议一种稍微不同的方法,实质上与你开始时没有太大的不同。
php artisan make:model WantedBook
档案:WantedBook.php
<?php
namespace App;
class WantedBook extends Eloquent
{
protected $table = 'wantedbooks';
// The rest is up to you, there's only 1 or 2 lines of code missing here
}
控制器动作(可以更短,但这个可读性很好):
public function wanted(Request $request)
{
$booklist= $request->input('isbn', []);
foreach($isbn as $isbn)
{
$record = App\WantedBook::create(['isbn' => $isbn, 'user_id' => Auth::user()->id]);
}
return response("submitted for user ID: " . Auth::user()->id);
}
免责声明:我没有发布开箱即用的代码,原因是没有人复制粘贴它。如果您认为使用模型概念的方法对您来说没问题,那么请尽可能多地从这个示例中删除。
如果您只是修改了代码,那么会出现一个善意的灵魂来提供它。
祝Laravel和PHP好运!