programing

Laravel-5 데이터베이스의 선택 상자를 ID 값과 이름 값으로 채우는 방법

javajsp 2023. 9. 11. 21:28

Laravel-5 데이터베이스의 선택 상자를 ID 값과 이름 값으로 채우는 방법

iluminate\html을 사용하여 아래와 같은 선택 상자를 만들고 싶습니다.

<select>
    <option value="$item->id">$item->name</option>
    <option value="$item->id">$item->name</option>
</select>

컨트롤러에서 다음을 시도했습니다.

public function create()
{
    $items = Items::all(['id', 'name']);

    return view('prices.create', compact('id', 'items'));
}

그리고 제가 보기엔..

<div class="form-group">
    {!! Form::Label('item', 'Item:') !!}
    {!! Form::select('item_id', $items, null, ['class' => 'form-control']) !!}
</div>

문제는 그 대신에$item->name엔티티의 모든 정보를 표시하고 있습니다.

Laravel은 목록() 기능이 있는 쿼리 작성기를 제공합니다.

당신의 경우, 당신의 코드를 바꿀 수 있습니다.

$items = Items::all(['id', 'name']);

와 함께

$items = Items::lists('name', 'id');

또한 다른 쿼리 작성기와도 연결할 수 있습니다.

$items = Items::where('active', true)->orderBy('name')->lists('name', 'id');

출처 : http://laravel.com/docs/5.0/queries#selects


Laravel 5.2 업데이트

대단히 감사합니다 @jarry.말씀하신 대로 Laravel 5.2의 기능은

$items = Items::pluck('name', 'id');

아니면

$items = Items::where('active', true)->orderBy('name')->pluck('name', 'id');

ref: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0 -- 감가상각 목록을 봅니다.

컨트롤러를 다음으로 변경하기만 하면 됩니다.

public function create()
{
    $items = Subject::all(['id', 'name']);
    return View::make('your view', compact('items));
}

귀하의 의견은 다음과 같습니다.

<div class="form-group">
  {!! Form::Label('item', 'Item:') !!}
  <select class="form-control" name="item_id">
    @foreach($items as $item)
      <option value="{{$item->id}}">{{$item->name}}</option>
    @endforeach
  </select>
</div>

이것이 당신의 문제를 해결하길 바랍니다.

Laravel >= 5.3 method lists''는 사용하지 않는 것입니다.pluck()

$items = Items::pluck('name', 'id');

{!! Form::select('items', $items, null, ['class' => 'some_css_class']) !!}

DB의 ID 번호와 동일한 선택 옵션이 있는 선택 상자를 제공합니다.

예를 들어, DB 테이블에 이 내용이 있는 경우:

id name
1  item1
2  item2
3  item3
4  item4

셀렉트 박스에서는 이렇게 될 것입니다.

<select>
<option value="1">item1</option>
<option value="2">item2</option>
<option value="3">item3</option>
<option value="4">item4</option>
</select>

이제 plec가 컬렉션을 반환한다는 것을 알게 되었고, plec가 끝날 때 Array()에 ->를 추가해야 합니다.이와 같이.pluck('name', 'id')->toArray();

컨트롤러

 $campaignStatus = Campaign::lists('status', 'id');

compact('campaignStatus')로 인해 [id=> status]; //compact[1 => 'campaignStatus']가 발생합니다.

return view('management.campaign.index', compact('campaignStatus'));

보다

{!! Form::select('status', $campaignStatus, array('class' => 'form-control')) !!}

Laravel 사용 배열:Form::select. 그래서 다음과 같이 배열을 통과했습니다.

$datas = Items::lists('name', 'id');
$items = array();

foreach ($datas as $data)
{
    $items[$data->id] = $data->name;
}

return \View::make('your view', compact('items',$items));

보기에는 다음과 같습니다.

<div class="form-group">
    {!! Form::label('item', 'Item:') !!}
    {!! Form::select('item_id', $items, null, ['class' => 'form-control']) !!}
</div>

컨트롤러에 추가합니다.

public function create()
{
    $items = array(
        'itemlist' =>  DB::table('itemtable')->get()
      );

    return view('prices.create', $items);
}

그리고 당신이 보기에, 사용.

<select name="categories" id="categories" class="form-control">
  @foreach($itemlist as $item)
    <option value="{{ $item->id }}">{{ $item->name }}</option>
  @endforeach
</select>

select 박스에서는 이렇게 됩니다.

<select>
 <option value="1">item1</option>
 <option value="2">item2</option>
 <option value="3">item3</option>
 ...
</select>

추가했습니다.toArray()끝나고pluck

$items = Item::pluck('name', 'id')->toArray();

{{ Form::select('item_id', [null=>'Please Select'] + $items) }}

Laravel 5.3 plec($value, $key) 사용

드롭 목록에 $value가 표시되고 $key는 id입니다.

콘트롤러

$products = Product::pluck('name', 'id');

return view('main.index', compact('products'));

보다

{{ Form::select('id', $products, null, ['class' => 'form-control']) }}

라라벨 5.*

컨트롤러에서:

$items= Items::pluck('name', 'id')->toArray();
return view('your view', compact('items', $items));

보기에는 다음과 같습니다.

{{ Form::select('organization_id', $items, null, []) }}

답장이 늦어서 미안합니다.

물론. 뻔하지.lists메소드가deprecated라라벨에서 하지만, 당신은 플랙 방법을 사용할 수 있습니다.

Eg의 경우:

라라벨 5.7

public function create()
{
    $countries =  Country::pluck('country_name','id');
    return View::make('test.new')->with('countries', $countries);
}

만약 당신이 그렇다면, 당신이 보기에.FORM구성 요소는 다음과 같이 전달됩니다.

{{  Form::select('testname',$countries,null,['class' => 'required form-control select2','id'=>'testname']) }}

if 가 드롭다운을 생성합니다.

하지만 나는 첫번째 옵션으로 선택한 국가를 null 값으로 보여줄 상황이 있습니다.

<option value="" selected="selected">--Select  Country--</option>

그래서 참고했습니다.

https://stackoverflow.com/a/51324218/8487424

그리고 이것을 고쳤지만 나중에 이것을 바꾸고 싶다면 보기에서 바꾸는 것이 싫습니다.

그래서 헬퍼 기능은 다음을 기반으로 만들어 졌습니다.https://stackoverflow.com/a/51324218/8487424국가 모델에 배치됩니다.

public static  function toDropDown($tableName='',$nameField='',$idField='',$defaultNullText='--Select--')
{
    if ($idField == null)
    {
        $idField="id";
    }

    $listFiledValues = DB::table($tableName)->select($idField,$nameField)->get();

            $selectArray=[];
            $selectArray[null] = $defaultNullText;
            foreach ($listFiledValues as $listFiledValue) 
            {
                $selectArray[$listFiledValue->$idField] = $listFiledValue->$nameField;
            }
            return $selectArray;
        }

제어 장치에서

public function create()
    {
      $countries = Country::toDropDown('countries','name','id','--Select  Country--');
      return View::make('test.new')->with('countries', $countries);
    }

그리고 마침내 시야에.

 {{  Form::select('testname',$countries,null,['class' => 'required form-control select2','id'=>'testname']) }}

그리고 결과는 예상대로이지만, 저는 강력하게 사용할 것을 추천합니다.pluck()

Laravel 5의 경우:

$items = Items::lists('name', 'id');

컬렉션의 시작 부분에 항목을 푸시합니다.

$items->prepend($value, $key = null);

드롭다운 선택 상자를 Larvel로 채우려면 아래 단계를 따라야 합니다.

컨트롤러로부터 다음과 같은 가치를 얻어야 합니다.

 public function addCustomerLoyaltyCardDetails(){
        $loyalityCardMaster = DB::table('loyality_cards')->pluck('loyality_card_id', 'loyalityCardNumber');
        return view('admin.AddCustomerLoyaltyCardScreen')->with('loyalityCardMaster',$loyalityCardMaster);
    }

그리고 우리가 볼 수 있는 것과 같은 것입니다.

 <select class="form-control" id="loyalityCardNumber" name="loyalityCardNumber" >
       @foreach ($loyalityCardMaster as $id => $name)                                     
            <option value="{{$name}}">{{$id}}</option>
       @endforeach
 </select>

이 드롭다운의 키 값은 요구 사항에 따라 사용할 수 있습니다.누군가에게 도움이 되기를 바랍니다.

이미 많은 이야기가 나왔지만 데이터베이스의 모든 레코드를 선택한 입력 필드에 출력하고 싶지 않을 때가 있다는 것을 명심하십시오.대표적인 예로, 저는 이 학교 관리 사이트에서 모든 게시판 카테고리를 선별된 문구로 출력해야 합니다.이것이 제가 작성한 제 제어부 코드입니다.

알림판: groupBy()->pluck('카테고리')->get();

이렇게 하면 그룹화된 레코드와 구별되는 레코드를 얻을 수 있으므로 레코드가 반복되지 않습니다.

Laravel 5.8에서 동일한 작업을 수행하려고 하다가 plec를 정적으로 호출하는 오류가 발생했습니다.저의 해결책은 다음과 같습니다.이 컬렉션은 분명히 todoStates라고 불렸습니다.

<div class="row mb-2">
    <label for="status" class="mr-2">Status:</label>
    {{ Form::select('status', 
                $todoStatuses->pluck('status', 'id'), 
                null, 
                ['placeholder' => 'Status']) }}
</div>

이거 드셔보세요.컨트롤러 미사용

{{ Form::select('apartment_id', \App\Apartment::all()->pluck('apartment_name', 'apartment_id')->toArray(), null,['class'=>'select2 form-control', 'multiple'=>'multiple','required','id' => 'apartment_id']) }}

언급URL : https://stackoverflow.com/questions/29508297/laravel-5-how-to-populate-select-box-from-database-with-id-value-and-name-value