在項目開發(fā)中經(jīng)常會使用到一些特殊的值作為數(shù)組的索引,一般可以先查詢出數(shù)據(jù)后數(shù)組循環(huán)拼接成所需的格式。不過YII2框架提供了一種更簡單的方法indexBy()。
當(dāng)你在調(diào)用all()方法時,它將返回一個以連續(xù)的整型數(shù)值為索引的數(shù)組。
而有時候你可能希望使用一個特定的字段或者表達(dá)式的值來作為索引結(jié)果集數(shù)組。那么你可以在調(diào)用all()之前使用indexBy()方法來達(dá)到這個目的。
例如,
// 以uid作為key值 $query = User::find() ->select(['uid', 'name']) ->indexBy('uid') ->asArray() ->all();
查詢結(jié)果如下:
{ "1001": { "uid": "1001", "name": "張三" }, "1002": { "uid": "1002", "name": "李四" }, "1003": { "uid": "1003", "name": "王五" } }
如需使用表達(dá)式的值做為索引,那么只需要傳遞一個匿名函數(shù)給indexBy()方法即可:
// 以uid和name組合作為key值 $query = User::find() ->select(['uid', 'name']) ->indexBy(function ($row) { return $row['uid'] . $row['name']; // row中使用的字段名只能是查詢返回的字段名 }) ->asArray() ->all();
查詢結(jié)果如下:
{ "1001張三": { "uid": "1001", "name": "張三" }, "1002李四": { "uid": "1002", "name": "李四" }, "1003王五": { "uid": "1003", "name": "王五" } }
注意: 與 groupBy() 或者 orderBy() 等查詢方法不同, 他們將轉(zhuǎn)換為 SQL 查詢語句的一部分,而這個方法(indexBy)在從數(shù)據(jù)庫取回數(shù)據(jù)后才生效執(zhí)行的。 這意味著只能使用那些在你的 SELECT 查詢中的列名。 此外,你用表名連接取列名的時候,比如 customer.id,結(jié)果中將只包含 id 列,因此你必須調(diào)用 ->indexBy(‘id’) 不要帶表名前綴。
推薦:《YII教程》??
Atas ialah kandungan terperinci Yii2中如何使用indexBy(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

YiiassetbundlesorganizeandManageWebassetssss, JavaScript, andimagesinayiiapplication.1.theysimplifyDependencyManagement, memastikanCorrectloadorder.2.theypreventduplicateassetinclusion.3

Dalam rangka kerja MVC, mekanisme pengawal untuk menjadikan pandangan adalah berdasarkan konvensyen penamaan dan membolehkan penindasan yang jelas. Sekiranya pengalihan tidak ditunjukkan secara eksplisit, pengawal secara automatik akan mencari fail paparan dengan nama yang sama dengan tindakan untuk rendering. 1. Pastikan fail paparan wujud dan dinamakan dengan betul. Sebagai contoh, laluan paparan yang sepadan dengan pertunjukan tindakan pengawal pengawal selia harus pandangan/siaran/show.html.erb atau paparan/pos/show.cshtml; 2. Gunakan rendering eksplisit untuk menentukan templat yang berbeza, seperti render'custom_template 'dalam rel dan paparan (' poss.custom_template ') di laravel

TOCREATEABASICROUTEINYII, FirstSetupAcontrollerbyPlacingItInTHeControllersDirectoryWithProperernamingandClassDefinitionErtingYii \ Web \ Web.1)

Ayiideveloper'skeSponSibilitiesInbilitiesincludedesigningandImplementingFeatures, memastikanPlicationseCurity, andoptimizingPerformance.qualificationsneedareastronggraspofphp, ExperienceWithFront-EndTechnologies, DatabaseManagementsKills, danProblemblembi

Kaedah mewujudkan operasi tersuai di YII adalah untuk menentukan kaedah yang sama bermula dengan tindakan dalam pengawal, secara pilihan menerima parameter; kemudian memproses data, membuat pandangan, atau mengembalikan JSON seperti yang diperlukan; dan akhirnya memastikan keselamatan melalui kawalan akses. Langkah -langkah khusus termasuk: 1. Buat kaedah yang diawali dengan tindakan; 2. Tetapkan kaedah kepada orang ramai; 3. Boleh menerima parameter URL; 4. Proses data seperti menanyakan model, memproses permintaan pos, pengalihan, dan sebagainya; 5. Gunakan AccessControl atau menyemak kebenaran secara manual untuk menyekat akses. Sebagai contoh, ActionProfile ($ ID) boleh diakses melalui /tapak /profil? Id = 123 dan menjadikan halaman profil pengguna. Amalan terbaik adalah

Ayiidevelopercraftswebapplicationsingingtheyiiframework, keperluanKillsinphp, yii-specificknowledge, dan webdevelopmentlifecyclemanagement.keewerponsibilitiesinclude: 1) writingefficientcodeTooptimizePormance, 2)

TouseActiveRecordinYiieffectively,youcreateamodelclassforeachtableandinteractwiththedatabaseusingobject-orientedmethods.First,defineamodelclassextendingyii\db\ActiveRecordandspecifythecorrespondingtablenameviatableName().Youcangeneratemodelsautomatic

Rakaman acara keselamatan di YII boleh dicapai dengan mengkonfigurasi sasaran log, mencetuskan log acara utama, memandangkan penyimpanan pangkalan data, dan mengelakkan rakaman maklumat sensitif. Langkah -langkah khusus adalah seperti berikut: 1. Tetapkan sasaran log khusus dalam fail konfigurasi, seperti filetase atau dBTarget, dan tentukan klasifikasi sebagai 'keselamatan'; 2. Gunakan yii :: info () atau yii :: amaran () untuk merakam log apabila peristiwa keselamatan kritikal (seperti kegagalan masuk dan menetapkan semula kata laluan) berlaku; 3. Secara pilihan menyimpan log dalam pangkalan data untuk pertanyaan dan analisis, dan anda perlu membuat jadual terlebih dahulu dan mengkonfigurasi parameter logTable; 4. Elakkan termasuk data sensitif, seperti kata laluan atau token semasa merakam maklumat konteks, dan anda boleh menggunakan penggantian parameter untuk menambah IP dan nama pengguna; 5
