programing

Laravel Expulent: 필드 ID로 배열 키 반환

closeapi 2023. 10. 8. 09:53
반응형

Laravel Expulent: 필드 ID로 배열 키 반환

Laravel의 Expulent ORM을 통해 쿼리를 실행할 때 행 ID를 Array 결과 키로 가져오려면 ID를 기반으로 확인하거나(array_key_exists 사용) 검색을 수행해야 할 때(결과 배열에서 특정 항목이 필요한 경우) 작업을 쉽게 수행할 수 있습니다.

필드 ID에 키를 설정하도록 Expellent에게 알려줄 방법이 있습니까?

간단히 할 수 있습니다.

Model::all()->keyBy('category_id');

Expulent Collection(일반 클래스하위 클래스)이 있으므로 메소드를 사용할 수 있습니다.$collection->getDictionary()에서는 기본 키로 키를 지정한 범주 개체 배열을 제공합니다.

네이티브 PHP 어레이가 아닌 다른 컬렉션을 원한다면 대신 다음을 사용할 수 있습니다.$collection->keyBy($property). 당신의 주된 열쇠는category_id,그렇게$collection->keyBy('category_id'). 이 메서드를 사용하여 작성한 get mutators를 포함하여 임의 속성으로 키를 지정할 수 있습니다.

하는 동안에getDictionary웅변가 특유의 존재입니다.Collection확장,keyBy모든 라라벨이 이용할 수 있습니다.Collection물건들.Laravel 4.2 API 문서 또는 Laravel 5.0 API 문서를 참조하십시오.

당신은.Support\Collection/Database\Eloquent\Collection방법을 사용하시면 됩니다.lists('id')집합 내의 각 모형의 id 배열을 반환합니다.

그럼 사용.array_combine키를 모델에 매핑할 수 있습니다.결과는 ID가 해당 모델에 매핑된 배열이 됩니다.

키로 id가 필요한 경우 Collection:

$collection = Model::all();

$collection->getDictionary();

// returns:
array(
  1 => object(Model) ( ... ),
  2 => object(Model) ( ... ),
  ...
  idN => object(Model) ( ... )
);

그렇지 않으면 좋든 싫든 간에 다음을 수행할 수 있습니다.

$keys = $collection->lists('columnName');

$arrayOfModels = array_combine($keys, $collection->getDictionary);

pluck('label','id')Laravel 5.8+에서 찾고 있는 것은 get() 출력입니다. 이 출력은 컬렉션을 제공하며, 준비가 완료된 상태입니다.toArray()ed

예:

$options = \App\DataChoice::where([ 'field_id' => $dataField->id , 'active' => true ])->get()->pluck('label','id')->toArray();

저도 비슷한 문제가 있었습니다. PHP 배열을 사용하여 각 선택에 대해 의 값을 id auto increment 열로 만들고 표시되는 텍스트를 값으로 만들 수 있도록 하고 싶었습니다.

언급URL : https://stackoverflow.com/questions/26865877/laravel-eloquent-return-array-key-as-the-fields-id

반응형