Jadual Kandungan
1. 链式 where 条件(最常见)
2. 使用数组传入多个条件
3. 使用 orWhere 实现 OR 条件
4. 嵌套条件(使用闭包分组)
5. 混合使用 ANDOR 的实际例子
6. 其他有用的 where 方法
小结:关键点
Rumah rangka kerja php Laravel Laravel di mana klausa pelbagai syarat

Laravel di mana klausa pelbagai syarat

Jul 30, 2025 am 01:57 AM

<p>链式where条件通过多个->where()方法以AND连接,适用于大多数场景;2. 数组传入条件可将[['status','=','active'],['age','>',18]]作为参数批量设置AND条件;3. 使用->orWhere()可添加OR条件,注意其与AND的优先级关系;4. 嵌套条件通过闭包实现分组,如->where(function($q){$q->where('status','active')->where('age','>',18);})->orWhere('role','admin'),确保复杂逻辑正确执行;5. 混合使用时需用闭包明确分组,避免运算符优先级导致逻辑错误;6. Laravel提供whereBetween、whereIn、whereNull等便捷方法,可与其他条件组合使用;实际开发推荐使用Eloquent模型提升代码可读性,关键在于正确使用闭包处理复杂条件组合。</p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/175381182394351.jpeg" class="lazy" alt="Laravel where clause multiple conditions"></p> <p>在 Laravel 中使用 Eloquent 或 Query Builder 添加多个 <code>WHERE</code> 条件是很常见的操作。你可以通过多种方式组合多个条件,下面介绍几种常用且清晰的方法。</p> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/175381182576935.png" class="lazy" alt="Laravel where clause multiple conditions"><hr> <h3 id="链式-code-where-code-条件-最常见">1. 链式 <code>where</code> 条件(最常见)</h3> <p>每个 <code>where</code> 方法会自动用 <code>AND</code> 连接:</p><pre class='brush:php;toolbar:false;'>$users = DB::table('users') ->where('status', '=', 'active') ->where('age', '>', 18) ->get();</pre><p>等价于 SQL:</p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/175381182743039.jpg" class="lazy" alt="Laravel where clause multiple conditions" /><pre class='brush:php;toolbar:false;'>SELECT * FROM users WHERE status = 'active' AND age > 18;</pre><blockquote><p>✅ 推荐方式:可读性强,适合大多数场景。</p></blockquote><hr /><h3 id="使用数组传入多个条件">2. 使用数组传入多个条件</h3><p>你可以将多个条件放在数组里一次性传入 <code>where</code>:</p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/175381182771946.jpg" class="lazy" alt="Laravel where clause multiple conditions" /><pre class='brush:php;toolbar:false;'>$users = DB::table('users') ->where([ ['status', '=', 'active'], ['age', '>', 18], ]) ->get();</pre><blockquote><p>⚠️ 注意:数组中的每项必须是数组格式,支持操作符如 <code>=</code>, <code>!=</code>, <code>></code>, <code><</code> 等。</p></blockquote><hr /><h3 id="使用-code-orWhere-code-实现-code-OR-code-条件">3. 使用 <code>orWhere</code> 实现 <code>OR</code> 条件</h3><p>如果你想用 <code>OR</code> 连接条件:</p><pre class='brush:php;toolbar:false;'>$users = DB::table('users') ->where('status', 'active') ->orWhere('age', '<', 20) ->get();</pre><p>等价于:</p><pre class='brush:php;toolbar:false;'>SELECT * FROM users WHERE status = 'active' OR age < 20;</pre><hr /><h3 id="嵌套条件-使用闭包分组">4. 嵌套条件(使用闭包分组)</h3><p>当你需要括号分组,比如 <code>(status = 'active' AND age > 18) OR (role = 'admin')</code>,可以用闭包:</p><pre class='brush:php;toolbar:false;'>$users = DB::table('users') ->where(function ($query) { $query->where('status', 'active') ->where('age', '>', 18); }) ->orWhere('role', 'admin') ->get();</pre><p>生成的 SQL:</p><pre class='brush:php;toolbar:false;'>SELECT * FROM users WHERE (status = 'active' AND age > 18) OR role = 'admin';</pre><blockquote><p>✅ 重要技巧:处理复杂逻辑时非常有用。</p></blockquote><hr /><h3 id="混合使用-code-AND-code-和-code-OR-code-的实际例子">5. 混合使用 <code>AND</code> 和 <code>OR</code> 的实际例子</h3><p>查找:活跃用户且年龄大于 18,或者用户名包含 "admin" 的用户:</p><pre class='brush:php;toolbar:false;'>$users = User::where('status', 'active') ->where('age', '>', 18) ->orWhere('name', 'like', '%admin%') ->get();</pre><p>但注意:上面会生成:</p><pre class='brush:php;toolbar:false;'>WHERE status = 'active' AND age > 18 OR name LIKE '%admin%'</pre><p>如果你本意是把前两个条件括起来,就要用闭包:</p><pre class='brush:php;toolbar:false;'>$users = User::where(function ($q) { $q->where('status', 'active') ->where('age', '>', 18); }) ->orWhere('name', 'like', '%admin%') ->get();</pre><hr> <h3 id="其他有用的-where-方法">6. 其他有用的 where 方法</h3> <p>Laravel 还提供很多便捷方法:</p> <ul> <li><code>whereBetween('age', [18, 65])</code></li> <li><code>whereIn('id', [1, 2, 3])</code></li> <li><code>whereNull('deleted_at')</code></li> <li><code>whereDate('created_at', '2024-01-01')</code></li> <li><code>whereYear('created_at', 2024)</code></li> </ul> <p>都可以和其他 <code>where</code> 混合使用。</p> <hr> <h3 id="小结-关键点">小结:关键点</h3> <ul> <li>多个 <code>->where()</code> 默认用 <code>AND</code> 连接。</li> <li>数组方式适合静态条件。</li> <li>用闭包处理复杂逻辑或括号分组。</li> <li>注意 <code>orWhere</code> 的优先级,必要时加括号(用闭包实现)。</li> <li>实际开发中建议用 Eloquent 模型代替 DB 查询,更清晰。</li> </ul> <hr> <p>基本上就这些,不复杂但容易忽略闭包的使用,尤其是在混合 <code>AND</code> / <code>OR</code> 时。</p>

Atas ialah kandungan terperinci Laravel di mana klausa pelbagai syarat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

Skop pembolehubah PHP dijelaskan
1 bulan yang lalu By 百草
Mengulas kod dalam php
1 bulan yang lalu By 百草
Petua untuk menulis komen php
1 bulan yang lalu By 百草

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1510
276
Apakah caching konfigurasi di Laravel? Apakah caching konfigurasi di Laravel? Jul 27, 2025 am 03:54 AM

Cache konfigurasi Laravel meningkatkan prestasi dengan menggabungkan semua fail konfigurasi ke dalam fail cache tunggal. Mengaktifkan cache konfigurasi dalam persekitaran pengeluaran dapat mengurangkan operasi I/O dan penguraian fail pada setiap permintaan, dengan itu mempercepat pemuatan konfigurasi; 1. Ia harus diaktifkan apabila permohonan itu digunakan, konfigurasi stabil dan tiada perubahan yang kerap diperlukan; 2. Selepas membolehkan, ubah suai konfigurasi, anda perlu menjalankan semula phpartisanconfig: cache untuk berkuat kuasa; 3. Elakkan menggunakan logik dinamik atau penutupan yang bergantung kepada keadaan runtime dalam fail konfigurasi; 4. Apabila masalah penyelesaian masalah, anda harus terlebih dahulu membersihkan cache, periksa pembolehubah .Env dan cache semula.

Terangkan lingkungan laravel fasih. Terangkan lingkungan laravel fasih. Jul 26, 2025 am 07:22 AM

Eloquentscopes Laravel adalah alat yang merangkumi logik pertanyaan biasa, dibahagikan kepada skop tempatan dan skop global. 1. Skop tempatan ditakrifkan dengan kaedah yang bermula dengan skop dan perlu dipanggil secara eksplisit, seperti pos :: diterbitkan (); 2. Skop global secara automatik digunakan untuk semua pertanyaan, sering digunakan untuk pemadaman lembut atau sistem multi-penyewa, dan antara muka skop perlu dilaksanakan dan didaftarkan dalam model; 3. Skop boleh dilengkapi dengan parameter, seperti penapisan artikel mengikut tahun atau bulan, dan parameter yang sepadan diluluskan ketika memanggil; 4. Perhatikan spesifikasi penamaan, panggilan rantai, pelepasan sementara dan pengembangan gabungan apabila menggunakan untuk meningkatkan kejelasan kod dan kebolehgunaan semula.

Menggunakan fasad penterjemah untuk penyetempatan di Laravel. Menggunakan fasad penterjemah untuk penyetempatan di Laravel. Jul 21, 2025 am 01:06 AM

ThetranslatorfacadeinlaravelisusedforlocalizationByFetchingTranslatedStringsandswitchingLanguageAgeArtime.touseit, StoretranslationstringsinLanguageFilesunderthelangdirectory (cth

Bagaimana cara mengejek objek dalam ujian Laravel? Bagaimana cara mengejek objek dalam ujian Laravel? Jul 27, 2025 am 03:13 AM

UsemockeryforcustomdependencybysettingExpectationswithShouldReceive (). 2.Uselaravel'sfake () methorfacadeslikemail, giliran, andhttptopreventrealinterint

Bagaimana untuk melaksanakan sistem rujukan di Laravel? Bagaimana untuk melaksanakan sistem rujukan di Laravel? Aug 02, 2025 am 06:55 AM

Buat jadual rujukan untuk merekodkan hubungan cadangan, termasuk rujukan, rujukan, kod cadangan dan masa penggunaan; 2. Tentukan hubungan dan hubungan hasmany dalam model pengguna untuk menguruskan data cadangan; 3. Menjana kod cadangan yang unik semasa mendaftar (boleh dilaksanakan melalui peristiwa model); 4. Menangkap kod cadangan dengan menanyakan parameter semasa pendaftaran, mewujudkan hubungan cadangan selepas pengesahan dan mencegah penyimpanan diri; 5. mencetuskan mekanisme ganjaran apabila pengguna yang disyorkan melengkapkan tingkah laku yang ditentukan (urutan langganan); 6. Menjana pautan cadangan yang boleh dikongsi, dan gunakan URL tandatangan Laravel untuk meningkatkan keselamatan; 7. Statistik cadangan paparan di papan pemuka, seperti jumlah cadangan dan nombor yang ditukar; Adalah perlu untuk memastikan kekangan pangkalan data, sesi atau kuki berterusan,

Bagaimana untuk membuat fail penolong di Laravel? Bagaimana untuk membuat fail penolong di Laravel? Jul 26, 2025 am 08:58 AM

Createahelpers.phpfileinapp/welterswithcustomfunctionsLikeFormatprice, isactiveroute, andisadmin.2.addthefiletothe "files" Sectionofcomposer.jsonunderautoload.3.RuncomposerdumpoMakions

Bagaimana untuk menjalankan projek Laravel? Bagaimana untuk menjalankan projek Laravel? Jul 28, 2025 am 04:28 AM

Checkphp> = 8.1, komposer, dan webserver; 2.cloneorcreateprojectandruncomposerinstall; 3.copy.env.exampleto.envandrunphpartimbeykey : menjana; 4.SetDataBaseSecredentientsin.envandrunphpartisanmigrate-Seed; 5.StartServerWithPhpartisanserve; 6.OptionallyRunnpmins

Bagaimana cara membiakkan pangkalan data di Laravel? Bagaimana cara membiakkan pangkalan data di Laravel? Jul 28, 2025 am 04:23 AM

Buat Fail Seeder: Gunakan PhPartisanMake: SeederSerseeder untuk menghasilkan kelas Seeder, dan masukkan data melalui kilang model atau pertanyaan pangkalan data dalam kaedah RUN; 2. Panggil penyokong lain dalam DatabaseSeeder: Daftar Usereeder, Postseeder, dan lain-lain. Sehingga melalui $ this-> call () untuk memastikan kebergantungan adalah betul; 3. Jalankan Seeder: Jalankan PhPartisandb: Benih untuk menjalankan semua Seeders berdaftar, atau gunakan PhPartisanMigrate: segar-Seed untuk menetapkan semula dan mengisi semula data; 4

See all articles