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
'programing' 카테고리의 다른 글
formGroup은 FormGroup 인스턴스를 필요로 합니다. (0) | 2023.09.11 |
---|---|
npm ERR!노드용 도커 이미지를 만드는 동안 트래커 "idealTree"가 이미 있습니다. (0) | 2023.09.11 |
CSS에서 최대 문자 길이 설정 (0) | 2023.09.11 |
링크된 서버에 대한 "IF EXISTRESS" 테스트가 있습니까? (0) | 2023.09.11 |
장고에서 부울 필드의 기본값으로 True를 설정하는 방법은 무엇입니까? (0) | 2023.09.11 |