개체 컬렉션이 있습니다. 객체가 태그라고 가정 해 보겠습니다.Laravel 4 - 컬렉션에서 속성 배열 가져 오기
$tags = Tag::all();
각 태그에 대해 특정 속성, 즉 그 이름을 가져 오려고합니다. 물론 할 수 있습니다
foreach ($tags as $tag) {
$tag_names[] = $tag->name;
}
그러나이 문제에 대한 해결책은 더 있습니까?
같은 것 $tags->name
?
개체 컬렉션이 있습니다. 객체가 태그라고 가정 해 보겠습니다.Laravel 4 - 컬렉션에서 속성 배열 가져 오기
$tags = Tag::all();
각 태그에 대해 특정 속성, 즉 그 이름을 가져 오려고합니다. 물론 할 수 있습니다
foreach ($tags as $tag) {
$tag_names[] = $tag->name;
}
그러나이 문제에 대한 해결책은 더 있습니까?
같은 것 $tags->name
?
컬렉션에는 @Gadoma가 설명하는 표의 방법과 비슷한 lists
방법이 있습니다.컬렉션의 각 항목에 대해 지정된 속성 값을 포함하는 배열을 반환합니다.
$tags->lists('name');
업데이트 : 5.2lists
이 pluck
로 대체 laravel 를 사용합니다.
$tags->pluck('name');
는 구체적으로는, laravel 5.2 upgrade guide는 "[t]가 자신이 수집, 쿼리 빌더 및 웅변 쿼리 빌더 오브젝트에 lists
메소드 pluck
으로 바뀌 었습니다. 메소드 서명은 동일하게 유지된다."고 언급
'lists' 메소드는 매우 좋은 결과입니다. –
html select form을 생성하는 경우 목록이 너무 좋아진다 : 'form :: select ('subcategory', array (null => '선택)') + $ category-> firstSubcategories-> lists ('name', 'id'))' – RY35
@BishalPaudel 또는 컨트롤러에서'Form :: select ('subcategory' , array (null => 'Please Choose') + $ firsSubcategories)', 블레이드에서 모두 동일합니다. – briankip
array_column
(PHP 5.5 함수이지만 Laravel은 대부분 동작을 복제하는 도우미 함수를 가지고 있습니다).
이와 같은 것으로 충분합니다.
$tag_names = array_column($tags->toArray(), 'name');
감사합니다. 그거야. 그러나'lists' 메서드는 훨씬 더 익숙하지 않은 것으로 생각합니다. – severin
물론, 나는 항상 '목록'을 잊어 버린다. –
네가 멋지고 쉽게 할 수있다. Laravel 4 Documentation states, 당신은 행에서 하나의 열을 가져 오는 테이블
$user = DB::table('users')->where('name', 'John')->first();
var_dump($user->name);
에서 단일 행을 검색하는 표
$users = DB::table('users')->get();
foreach ($users as $user)
{
var_dump($user->name);
}
에서 모든 행을 검색
할 수
열 목록을 가져 오는 중는역할 제목의 배열을 반환합니다
$roles = DB::table('roles')->lists('title');
이 방법을 값. 또한 반환 된 배열에 대한 사용자 지정 키 열을 지정할 수 있습니다 :
$roles = DB::table('roles')->lists('title', 'name');
이 SELECT 절
지정$users = DB::table('users')->select('name', 'email')->get();
$users = DB::table('users')->distinct()->get();
$users = DB::table('users')->select('name as user_name')->get();
이 편집 :
는 위의 예에 액세스하는 방법을 보여줍니다 Laravel의 유창한 쿼리 작성 도구를 사용하여 당신이 모델을 사용하는 경우 설득력이 internaly 쿼리 빌더를 사용하기 때문에 아무 문제없이 할 수있는, Laravel's Eloquent ORM
과 데이터에 액세스 할 수 있습니다 할 다음과 같은 사항 :
:도 함께 할 수$tag_names = $tags->lists('tag_name_label', 'tag_name_column')->get();
$tag_names = DB::table('tags')->lists('tag_name_label', 'tag_name_column')->get();
오늘 아침 내 실험에서 발췌 한 내용입니다. 콜렉션에 $ collection-> distinct() 메소드가 있기를 바란다. 그래서 이미 필터링 된 콜렉션을 기반으로하는 컬럼 값 목록을 쉽게 생성 할 수있다.
생각하십니까?
이 스 니펫이 표, 컬렉션 및 우수 모델에서 고유 값 목록을 생성하기위한 몇 가지 대체 옵션을 명확히하는 데 도움이되기를 바랍니다.
웅변 모델을 사용하여 (해피)
/**
* Method A
* Store Collection to reduce queries when building multiple lists
*/
$people = Person::get();
$cities = array_unique($people->lists('city'));
$states = array_unique($people->lists('state'));
// etc...
컬렉션을 사용하여 (행복한) 웅변 모델 PLUS 캐싱 (행복한)
/**
* Method C
* Utilize the Eloquent model's methods PLUS the built in Caching
* Queries only run once expiry is reached
*/
$expiry = 60; // One Hour
$cities = Person::remember($expiry)->distinct()->lists('city');
$states = Person::remember($expiry)->distinct()->lists('state');
를 사용
/**
* Method B
* Utilize the Eloquent model's methods
* One query per list
*/
// This will return an array of unique cities present in the list
$cities = Person::distinct()->lists('city');
$states = Person::distinct()->lists('state');
여러분이 가지고 있다면이 대안을 듣고 싶습니다!
@ErikOnTheWeb
'$ tags-> name' 나 또한 처음에는 그렇게 기대했지만, 그렇지 않은 –
작동합니다 :'정의되지 않은 속성 : \ 데이터베이스 \ 웅변 \ 컬렉션 : $ name' – severin
조명을 @severin $ tags는 name 속성을 가진 단일 객체가 아닌 객체의 컬렉션입니다. 각 태그 이름을 얻기 위해 $ tags를 반복해야합니다. 태그에서 이름 속성을 가져 오는 것은 의미가 없습니다. 어떤 이름 속성을 실제로 인쇄 할 것으로 가정합니까? –