Благодарим за помощь. Я закончил выпуск и сейчас работает ...
Это часть моего мнения;
<div class="grid1">
{!! Form::label('product_list'.$product_row, Lang::get('home.Select Product')) !!}
</div>
<div class="grid2 searchDrop">
{!! Form::select('product_list[]', $product_list, null, ['style'=>'width:150px;'])!!}
и это является частью моего контроллера;
public function store(OrderRequest $request)
{
$order = Order::create($request->all());
$product_list= $request->input('product_list');
$product_quantity = $request->input('product_quantity');
$product_status = $request->input('product_status');
/* attach pivot table */
$order->product()->attach($product_list);
/* get the product list as array */
foreach($product_list as $key => $product_id)
{
$order->product()->updateExistingPivot($product_id, array(
'product_quantity' => $product_quantity[$key], // product_quantity is array
'product_status' => $product_status[$key], // product_status is array
'updated_at' => Carbon::now()
));
}
flash(Lang::get('home.The order has been created!'));
return redirect(url('/admin/orders/details',$order->id))->with('flash_message');
}
это мой запросRequest;
public function rules()
{
return [
'customer_id' => 'required',
'product_quantity.*' =>'not_in:0',
'product_list' => 'product_unique', //custom validation in AppServiceProvider
];
}
и это мой AppServiceProvider;
public function boot()
{
Validator::extend('product_unique', function($attribute, $value, $parameters, $validator) {
if (count(array_unique($value))!=count($value)) {
return false;
}
return true;
});
}
Наконец, в моем validation.php я добавил;
"product_unique" => "Please select a product only once!",
Вы можете acheave это с редактированием миграции поворотную и добавьте эту строку '$ стол-> первичный ([«ORDER_ID»,«product_id»]);' и если вы хотите, вы можете удалить 'id' столбец из сводной таблицы. И не забудьте сделать 'artisan migrate: refresh' !! – Maraboc
это нормально, но мне нужно что-то еще. В форме запроса, когда я дважды выбираю продукт, я должен получить сообщение об ошибке. Когда я пытаюсь, как вы сказали, он не дает мне сообщение об ошибке, просто сохраняет последний вариант того же продукта в базе данных. –
Взгляните на это [сообщение] (http://stackoverflow.com/questions/32199441/unique-name-rule-validation-based-on-pivot-table-laravel), это может помочь вам, сообщите мне, если вы нужны некоторые эксцессы :) – Maraboc