как добавить несколько select2 с помощью jquery и циклически проходить через продукты - PullRequest
0 голосов
/ 30 мая 2019

У меня новая версия 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>

Каким-то образом поле множественного выбора не загружает ассоциации, уже выбранные из базы данных, и не позволяет выбирать и назначать новые.

...