У меня новая версия Laravel 5.8 с административной панелью Voyager версии 1.2.2, в которой я переопределил BREAD для моих продуктов, что позволит пользователям выбирать «связанные продукты». У меня есть код, работающий с флажками, но есть более 2000 продуктов, и я хочу, чтобы он работал с select2 и jquery, чтобы он зацикливался на продуктах в базе данных и позволял связывать продукты из сводной таблицы.
class Product extends Model
{
public function groups(){
return $this->belongsToMany('App\Group');
}
public function categoriesCards(){
return $this->belongsToMany('App\CategoryCard');
}
public function associated() {
return $this->belongsToMany(Product::class, 'product_assocs', 'product_id_primary', 'product_id_assoc')->orWhere('product_id_assoc', $this->id);;
}
public function related() {
return $this->belongsToMany(Product::class, 'product_assocs', 'product_id_assoc', 'product_id_primary');
}
}
class ProductAssoc extends Model
{
protected $table = 'product_assocs';
protected $fillable = ['product_id_primary', 'product_id_assoc'];
public function products()
{
return $this->belongsTo('App\Product');
}
}
class Select2AutocompleteController extends Controller
{
/**
* Show the application layout.
*
* @return \Illuminate\Http\Response
*/
public function layout()
{
return view('select2');
}
/**
* Show the application dataAjax.
*
* @return \Illuminate\Http\Response
*/
public function dataAjax(Request $request)
{
$data = [];
if($request->has('q')){
$search = $request->q;
$data = DB::table("products")
->select("id","style_number","name")
->where('name','LIKE',"%$search%")
->get();
}
return response()->json($data);
}
}
Route::get('select2-autocomplete', 'Select2AutocompleteController@layout');
Route::get('select2-autocomplete-ajax', 'Select2AutocompleteController@dataAjax');
<select name="association[]" style="margin-right:5px;" id="select2-multi" class="form-control select2-multi" multiple>
@foreach ($allAssociations as $product)
<option value="{{ $product->id }}" selected> {{ $product->style_number }} - {{ $product->name }}</option>
@endforeach
</select>
Каким-то образом поле множественного выбора не загружает ассоциации, уже выбранные из базы данных, и не позволяет выбирать и назначать новые.