Laravel 8.54.0 Livewire : Ошибка SQLSTATE[IMSSP] Пытался привязать параметр номер 2101. SQL Server поддерживает максимум 2100 параметров

#php #sql-server #laravel #laravel-8 #laravel-livewire

Вопрос:

Я использую фреймворк Laravel 8.54.0 и livewire. Я хочу вызвать данные для своей раскрывающейся формы. Но я получаю ошибку sqlstate. Может ли кто-нибудь помочь мне найти способ решить эту проблему?

Модель:

 class Item extends Model
{
    protected $table = 'item';
    protected $primaryKey = 'idx';
    public $timestamps = false;
    public const CREATED_AT = 'd_in';
    public const UPDATED_AT = 'd_edit';
    protected $connection = 'mysql2';
}

 

Контроллер Livewire:

 $this->produk_ictn_row = Item::get();
 

Вид:

 <select disabled name="formkodeproduk" id="formkodeproduk" class="form-control @error('formkodeproduk') is-invalid @enderror" wire:model="produk_code">
@foreach($produk_ictn_row as $produk_ictn_row)
    <option value="{{$produk_ictn_row->Kode}}">{{$produk_ictn_row->Kode}}</option>
@endforeach
</select>
 

введите описание изображения здесь

Ответ №1:

в нем говорится, что у вас более 2100 записей, поэтому запрос должен содержать их все в запросе where!!

Ну , в некоторых sql-сервисах, таких как microsoft-sql, ограничение в параметре sql равно 2100, так что у вас есть 2 варианта:

во-первых, вы можете разделить свой запрос, чтобы предотвратить эту ошибку… во-вторых, вы можете разделить свою таблицу и выполнить несколько параллельных запросов.

Комментарии:

1. не могли бы вы дать мне ссылку для выполнения некоторых параллельных запросов в laravel-8?

2. github.com/staudenmeir/eloquent-param-limit-fix

3. это очень простой пакет для обработки ошибок и выполнения запросов по блокам