this is my Order MOdel
public function cliente()
{
return $this->belongsTo(Customer::class);
}
public function product()
{
return $this->belongsToMany(Product::class);
}
and my Order Controller
<?php
namespace AppHttpLivewireOrder;
use AppModelsCustomer;
use AppModelsOrder;
use AppModelsProduct;
use LivewireComponent;
class Create extends Component
{
public Order $order;
public array $product = [];
public array $listsForFields = [];
public function mount(Order $order)
{
$this->order = $order;
$this->initListsForFields();
}
public function render()
{
return view('livewire.order.create');
}
public function submit()
{
$this->validate();
$this->order->save();
$this->order->product()->sync($this->product);
return redirect()->route('admin.orders.index');
}
protected function rules(): array
{
return [
'order.codice_fiscale' => [
'string',
'nullable',
],
'order.cliente_id' => [
'integer',
'exists:customers,id',
'nullable',
],
'product' => [
'array',
],
'product.*.id' => [
'integer',
'exists:products,id',
],
'order.nome' => [
'string',
'nullable',
],
];
}
protected function initListsForFields(): void
{
$this->listsForFields['cliente'] = Customer::pluck('descrizione', 'id')->toArray();
$this->listsForFields['product'] = Product::pluck('name', 'id')->toArray();
}
}
<div class="form-group {{ $errors->has('order.codice_fiscale') ? 'invalid' : '' }}">
<label class="form-label" for="codice_fiscale">{{ trans('cruds.order.fields.codice_fiscale') }}</label>
<input class="form-control" type="text" name="codice_fiscale" id="codice_fiscale" wire:model.defer="order.codice_fiscale">
<div class="validation-message">
{{ $errors->first('order.codice_fiscale') }}
</div>
<div class="help-block">
{{ trans('cruds.order.fields.codice_fiscale_helper') }}
</div>
</div>
<div class="form-group {{ $errors->has('order.cliente_id') ? 'invalid' : '' }}">
<label class="form-label" for="cliente">{{ trans('cruds.order.fields.cliente') }}</label>
<x-select-list class="form-control" id="cliente" name="cliente" :options="$this->listsForFields['cliente']" wire:model="order.cliente_id" />
<div class="validation-message">
{{ $errors->first('order.cliente_id') }}
</div>
<div class="help-block">
{{ trans('cruds.order.fields.cliente_helper') }}
</div>
</div>
<div class="form-group {{ $errors->has('product') ? 'invalid' : '' }}">
<label class="form-label" for="product">{{ trans('cruds.order.fields.product') }}</label>
<x-select-list class="form-control" id="product" name="product" wire:model="product" :options="$this->listsForFields['product']" multiple />
<div class="validation-message">
{{ $errors->first('product') }}
</div>
<div class="help-block">
{{ trans('cruds.order.fields.product_helper') }}
</div>
</div>
<div class="form-group {{ $errors->has('order.nome') ? 'invalid' : '' }}">
<label class="form-label" for="nome">{{ trans('cruds.order.fields.nome') }}</label>
<input class="form-control" type="text" name="nome" id="nome" wire:model.defer="order.nome">
<div class="validation-message">
{{ $errors->first('order.nome') }}
</div>
<div class="help-block">
{{ trans('cruds.order.fields.nome_helper') }}
</div>
</div>
<div class="form-group">
<button class="btn btn-indigo mr-2" type="submit">
{{ trans('global.save') }}
</button>
<a href="{{ route('admin.orders.index') }}" class="btn btn-secondary">
{{ trans('global.cancel') }}
</a>
</div>
Work fine, but i want composer my order about 3 different sub-order A, B, C because i have 3 different delivery: del-A, del-B and del-C.
i think it’s possible i have this situation in my table order, 3 line same client and 3 delivery (consegna in Ialyan)

but now i don’t understund other relationship..
i need 3 different table each for one delivery?
thanks