#laravel #laravel-5
#laravel #laravel-5
Вопрос:
Я хочу вставить массив с идентификатором: create.blade :
{{ Form::open(array('route' => 'Charge.store','method'=>'POST')) }}
<select id="disabledSelect" class="form-control" name="Facture_id">
<option value="{{ $Facture->id }}" >{{ $Facture->Num }}</option>
</select>
<br/>
<div class="form-inline">
<div class="form-group">
<input type="text" class="form-control" name="rows[0][Title]" placeholder="libelé"/>
</div>
<div class="form-group">
<input type="text" class="form-control" name="rows[0][Quantity]" placeholder="Quantité"/>
</div>
<div class="form-group">
<input type="text" class="form-control" name="rows[0][Price]" placeholder="Prix unitaire "/>
</div>
<div class="form-group">
<input type="button" class="btn btn-default" value="Ajouter" onclick="createNew()" />
</div>
<div id="mydiv"></div>
</div>
<br/>
<div class="form-group">
<input type="submit" value="Ajouter" class="btn btn-info">
<a href="{{ route('Facture.index') }}" class="btn btn-default">Cancel</a>
</div>
{{ Form::close() }}
<script>
var i = 2;
function createNew() {
$("#mydiv").append('<div class="form-group">' '<input type="text" name="rows[' i '][Title]" class="form-control" placeholder="libelé"/>'
'</div>' '<div class="form-group">' '<input type="text" name="rows[' i '][Quantity]" class="form-control" placeholder="Quantité"/>' '</div>' '<div class="form-group">' '<input type="text" name="rows[' i '][Price]" class="form-control" placeholder="Prix unitaire "/>' '</div>' '<div class="form-group">'
'<input type="button" name="" class="btn btn-default" value="Ajouter" onclick="createNew()" />'
'</div><br/>');
i ;
}
</script>
вот мой контроллер, когда я попытался отправить форму, он вводит строки со значением 0.
Что мне делать? Я пытался использовать elequent bolk
данные, но проблема остается той же:
public function store(Request $request)
{
// validated input request
$this->validate($request, [
'Facture_id' => 'required',
]);
// create new task
$rows = $request->input('rows');
foreach ($rows as $row)
{
$Charges[] = new Charge(array(
'course_id'=>$request->input('Facture_id'),
'Title'=>$row['Title'],
'Quantity'=>$row['Quantity'],
'Price'=>$row['Price'],
));
}
Charge::create($Charges);
return redirect()->route('Charge.index')->with('success', 'Your task added successfully!');
}
Ответ №1:
Вы можете использовать insert()
метод:
foreach ($rows as $row)
{
$charges[] = [
'course_id' => $request->input('Facture_id'),
'Title' => $row['Title'],
'Quantity' => $row['Quantity'],
'Price' => $row['Price'],
];
}
Charge::insert($charges);
Не забудьте добавить все имена столбцов, которые вы используете, в $fillable
массив:
$fillable = ['course_id', 'Title', 'Quantity', 'Price'];
Комментарии:
1. Что касается существующих данных (того же первичного ключа) в таблице, мы используем insert Charge::insert($ charges), тогда все в порядке?
2. @DangCongDuong чтобы обновить существующие данные, используйте
update()
3. Я имею в виду, что у нас есть несколько строк для вставки, но мы не знаем, какая из них существует или нет? Например, у нас есть 100 строк. В этом случае, не могли бы вы дать мне решение для этого, я хочу пропустить данные, если они существуют?