Koleksi yang fasih
Pengenalan
- Kaedah yang ada
- Sesuaikan collections
- Eloquent Return Semua set hasil berbilang adalah objek
IlluminateDatabaseEloquentCollection< Instance of /code>, termasuk hasil yang diambil melalui kaedah get
atau diperoleh dengan mengakses perhubungan. Objek koleksi Eloquent mewarisi kelas asas koleksi Laravel, jadi ia secara semula jadi juga mewarisi berpuluh-puluh kaedah yang boleh mengendalikan tatasusunan asas model Eloquent dengan elegan.
Selain itu, semua koleksi boleh digunakan sebagai iterator, dan anda boleh mengulanginya seperti tatasusunan PHP yang mudah: $users = App\User::where('active', 1)->get();
foreach ($users as $user) {
echo $user->name;
}
Walau bagaimanapun, koleksi lebih berkuasa daripada tatasusunan, dan ia mendedahkan panggilan boleh rantai melalui antara muka yang lebih intuitif. mengurangkan dan operasi lain. Sebagai contoh, mari kita keluarkan semua pengguna yang tidak aktif dan kumpulkan nama pengguna yang tinggal:
$users = App\User::all(); $names = $users->reject(function ($user) { return $user->active === false; })->map(function ($user) { return $user->name; });
{note} Kaedah pengumpulan Eloquent yang paling fasih mengembalikan contoh koleksi Eloquent baharu, tetapipluck
, Pengecualian adalahkunci
,zip
,runtuhkan
,ratakan
danflip
kaedah, yang mengembalikan koleksi A contoh kelas asas. Begitu juga, jika operasimap
mengembalikan koleksi yang tidak mengandungi sebarang model Eloquent, ia secara automatik ditukar kepada kelas asas koleksi.
IlluminateDatabaseEloquentCollection
对象的实例,包括通过get
方法检索或通过访问关联关系获取到的结果。 Eloquent 的集合对象继承了 Laravel 的 集合基类,因此它自然也继承了数十种能优雅地处理 Eloquent 模型底层数组的方法。而且,所有的集合都可以作为迭代器,你可以像遍历简单的 PHP 数组一样来遍历它们:
<?php namespace App; use App\CustomCollection; use Illuminate\Database\Eloquent\Model; class User extends Model{ /** * 创建一个新的 Eloquent 集合实例对象。 * * @param array $models * @return \Illuminate\Database\Eloquent\Collection */ public function newCollection(array $models = []) { return new CustomCollection($models); } }不过,集合比数组更加强大,它通过更加直观的接口暴露出可链式调用的 map /reduce 等操作。例如,让我们移除所有未激活的用户并收集剩余用户的名字:
rrreee{note} 大多数 Eloquent 集合方法会返回新的 Eloquent 集合实例,但是
pluck
,keys
,zip
,collapse
,flatten
和flip
方法除外,它们会返回一个 集合基类 实例。同样,如果map
Kelas Pangkalan Koleksi
Semua objek Eloquent mewarisi objek koleksi Laravel asas; oleh itu, mereka juga mewarisi semua kaedah berkuasa yang disediakan oleh kelas asas koleksi:
semua
average
avg
chunk
collapse
collapse
mengandungi Strict
count
crossJoin
dd
diff
diffKeys
dump
setiap
eachSpre ad
setiap
kecuali
filter
first
flatfget
flatMapten
dapat
kumpulan
telah
meletup
bersilang
isKosong
isNotEmpty
keyBy
keys
last
map
mapInnto
mapSpread
mapToGroups
mapWithKeys
max
median
merge
min
mode
partii
mode
kedua
pad
kedua
pluck
pop
prepend
tarik
tolak
put
rawak
kurangkan
tolak
terbalikkan
cari
shift
shuffle
slice
sesetengah
sort
sortBy
sortByDesc
splice
split
sum
arraytotranstake
kesatuan
unik
unikTegas
melainkan
nilai
bila
dimana
dimanaStrict
whereIn
whereInStrict
whereNotIn
whereNotInStrict
zip>Koleksi Tersuai anda perlu menggunakan sambungan tersuai objek, anda boleh mengatasi kaedah
Setelah anda menentukan kaedahnewCollection
dalam model anda: rrreeenewCollection
, anda sentiasa boleh menggunakannya dalammodel yang dikembalikan oleh Contoh fasih >Koleksi
untuk mendapatkan contoh koleksi tersuai anda. Jika anda ingin menggunakan koleksi tersuai dalam setiap model dalam aplikasi anda, anda harus mengatasi kaedahnewCollection
dalam kelas asas model yang diwarisi oleh semua model. Artikel ini pertama kali diterbitkan di laman webLearnKu.com
.rrreee
Collection
对象,你可以在你的模型中重写newCollection
方法:一旦你定义了
newCollection
方法,任何时候都可以在 Eloquent 返回的模型的Collection
实例中获得你的自定义集合实例。如果你想要在应用程序的每个模型中使用自定义集合,则应该在所有的模型继承的模型基类中重写newCollection