Как искать значение в базе данных после объединения двух атрибутов в Laravel - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть таблица Organizations, которая имеет следующие атрибуты

id
name
acronym

и переформатирует имя организации путем объединения атрибутов name и acronym в модели организации с использованием Accessor

    public function getOrganizationNameAttribute()
    {
        if($this->acronym != null)
        {
            return $this->name. ' ('.$this->acronym.') ';
        }
        else{
            return $this->name;
        }
    }

. созданная форма, в которой пользователь должен выбрать организацию при наборе с использованием списка данных

<label class="col-form-label">Organization <span class="star">{{$star ?? ''}}</span></label>
<input list="organizations" type="text" name="organization" class="form-control @error('organization_id') is-invalid @enderror" value="{{old('organization',$old ?? '')}}" placeholder="Ex. TGNP Mtandao, Vodacom" {{$req ?? ''}}/>
<datalist id="organizations">
    @foreach($organizations as $organization)
        <option value="{{$organization->organization_name}}"/>
    @endforeach
</datalist>

Когда пользователь выбирает конкретную организацию, система будет искать имя_организации и получать ее уникальный идентификатор, если его не существует, система создаст новое значение и вернуть идентификатор

В примере есть значение в организационной таблице

id:1 
name:United Republic of Tanzania
acronym: URT

Затем форма возвращает название организации как

United Republic of Tanzania (URT)

Вот моя проблема:

когда пользователь выбирает United Republi c из Танзании (URT) и отправляет форму, я ожидаю, что система вернет ID 1 , но вместо этого вернет ноль. Как мне это решить?

1 Ответ

1 голос
/ 16 апреля 2020

в вашем html вы должны использовать

, сначала добавьте эти ссылки к вашей голове

<link href="https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.0.13/dist/js/select2.min.js"></script>

, затем используйте этот выбор

<select name="organizations" id="myorgselect" class="form-control" multiple="multiple">
    @foreach($organizations as $organization)
         <option value="{{$organization->organization_id}}">
              {{$organization->organization_name}}
         </option>
    @endforeach
</select>

и добавьте его в Ваш javascrict

$("#myorgselect").select2({
tags: true
})

см. ссылку ниже для использования тегов

https://select2.org/tagging

...