


6 Petua Laravel Fasih untuk membantu anda meningkatkan kebolehbacaan kod!
Artikel ini menyusun dan berkongsi enam petua Laravel Eloquent yang boleh meningkatkan kebolehbacaan kod saya harap ia akan membantu semua orang.
Eloquent ialah ORM yang digunakan oleh Laravel secara lalai. Mod rakaman aktif digunakan. Membolehkan anda berinteraksi dengan pangkalan data dengan cara yang lebih mudah. Setiap model individu mewakili jadual dalam pangkalan data yang boleh anda kendalikan. Dalam artikel ini, kami akan menunjukkan kepada anda lebih kurang rahsia, kaedah dan sifat tersembunyi yang mungkin anda tidak tahu untuk menambah baik kod anda.
Atribut penamaan ular
Atribut penamaan ular ialah atribut yang menarik. Mari lihat apa yang dinyatakan oleh kod itu:
/** * 指示是否在数组上使用蛇形大小写属性。 * * @var bool */ public static $snakeAttributes = true;
Orang sering menggunakan harta ini secara tidak betul untuk menukar cara harta itu diakses. Ramai orang percaya bahawa jika anda menukar harta ini, anda boleh mengakses harta itu dengan mudah menggunakan anotasi camelCase. Ini tidak berlaku. Kami amat mengesyorkan anda untuk tidak menggunakannya. Apabila model dikeluarkan sebagai tatasusunan, hanya tentukan sama ada atribut haruslah camelCase atau SnakeCase.
Jika anda ingin mengasaskan penamaan camelCase, kami mengesyorkan anda menyemak pakej Eloquence oleh Kirk Bushell.
Penomboran
Jika anda Jika anda gunakan ORM Eloquent Laravel, maka ini berita baik untuk anda. Ia menyediakan kaedah penomboran di luar kotak. Anda mungkin biasa menulis seperti ini:
$comments = Comment::paginate(20);
Menggunakan kaedah ini, anda boleh menomborkan model ulasan dengan 20 entri setiap halaman. Tukar nilai ini untuk menentukan bilangan item yang dipaparkan setiap halaman. Jika tiada apa yang dinyatakan, nilai lalai digunakan, iaitu 15.
Andaikan anda mahu ulasan anda dipaparkan di berbilang tempat di tapak web anda. Selalu ada 30 komen setiap halaman. Jika anda perlu melepasi parameter 30 di mana-mana, itu masalah. Oleh itu, anda boleh menetapkan nilai lalai baharu secara langsung pada model.
protected $perPage = 30;
Tambahkan nilai tersuai dalam model
Eloquent mempunyai ciri berkuasa yang dipanggil "accessor". Ciri ini membolehkan anda menambah medan tersuai pada model atau jadual yang tidak wujud dalam model. Tidak kira jika anda menggunakan nilai sedia ada atau mentakrifkan nilai baharu sepenuhnya, anda sentiasa boleh berundur. Di bawah ialah contoh cara pengakses berfungsi. Katakan terdapat model bernama user
, kami menambah pengakses Nama Penuh padanya:
function getFullNameAttribute() { return sprintf('%s %s', $this->first_name, $this->last_name); }
Kini anda boleh mengakses atribut full_name
pada model siaran, seperti berikut:
User::latest()->first()->full_name;
Jika objek (seperti koleksi) dikembalikan, sifat ini tidak akan dilampirkan pada model pengguna. Tambahkan atribut$appends
yang dilindungi pada model. Ia menerima tatasusunan yang mengandungi satu atau lebih medan, yang harus dilampirkan secara automatik mulai sekarang. Tulis sahaja seperti ini:
protected $appends = ['full_name'];
Tambahkan mutator (penetap hartanah) untuk lajur yang tidak wujud
Mutator adalah bertentangan dengan getter. Anda boleh melakukan perkara yang sangat menarik dengannya. Sebagai contoh, tukar jenis input yang berbeza. Biar saya beritahu anda secara terperinci. Katakan anda ingin menyimpan jenis tempoh masa. Secara amnya, anda sentiasa menyimpan unit terkecil yang mungkin. Dalam kes kami, ia adalah beberapa saat. Atas sebab UX, pengguna tidak mahu memasukkan saat, seperti minit di satu tempat atau jam di tempat lain. Ini semua boleh diselesaikan dengan cepat.
class Video extends Model { public function setDurationInMinutes($value) { $this->attributes['duration_in_seconds'] = $value * 60; } public function setDurationInHours($value) { $this->attributes['duration_in_seconds'] = $value * 60 * 60; } }
Kod di atas bermakna anda boleh menggunakan medan yang tidak wujud dalam jadual data itu sendiri. Medan
digunakan dalam duration_in_minutes
model, tetapi di latar belakang, kami menggunakan duration_in_seconds
untuk mengemas kini, atau mungkin menggunakan medan yang tidak wujud duration_in_hours
. Mengikut logik ini, kami memanggilnya seperti ini dalam Pengawal:
class AnyController { public function store() { $video->update([ 'title' => request('title'), 'duration_in_minutes' => request('duration_in_minutes'), ]); } }
Ini akan menjimatkan masa anda melakukan pengiraan dalam pengawal, anda hanya boleh menggunakan lajur yang tidak wujud dan menggunakannya semasa melakukan pengiraan tertentu 变异器
Petakan hasilnya ke medan yang betul.
Bersemangat memuatkan: dengan $with
Mari kita bercakap tentang perhubungan. Secara lalai, Laravel menggunakan pemuatan malas. Apakah maksud ini dari segi perhubungan? Kelebihan lazy loading ialah ia dapat menjimatkan memori, kerana tidak semua data perlu disimpan, dan kita boleh memuatkan data apabila diperlukan. Seperti berikut:
$comments = Comment::all(); foreach ($comments as $comment) { echo $comment->user->name; }
Dalam contoh di atas, kami akan mendapat semua data ulasan. Kemudian lelaran melalui ulasan dan memaparkan nama pengguna untuk setiap ulasan. Tidak ada yang salah dengan kod ini dan ia berfungsi dengan baik, tetapi kami menghadapi masalah. Pemuatan malas kini memastikan bahawa pertanyaan untuk mendapatkan pengguna hanya dilaksanakan apabila kami ingin mengeluarkan nama pengguna.
Selamat datang ke soalan N 1 pertama anda. Kenapa N 1? N ialah bilangan ulasan dan 1 ialah pertanyaan untuk mendapatkan ulasan. Contohnya, jika kami mempunyai 500 ulasan, maka pertanyaan untuk mendapatkan semua ulasan dicetuskan sekali, dan kemudian satu pertanyaan untuk mendapatkan pengguna setiap ulasan yang sepadan. Jadi 500 untuk 1 pertanyaan. Ini bermakna apabila bilangan anotasi bertambah, bilangan pertanyaan juga meningkat.
Untuk mengelakkan ini, terdapat kaedah yang dipanggil eager loading.
$comments = Comment::with('user')->get(); foreach ($comments as $comment) { echo $comment->user->name; }
这会以两个查询结束。第一个查询获取所有注释,第二个查询立即获取所有关联用户。在后台,会发生以下情况(简化版SQL):
SELECT id, user_id, body FROM comments; SELECT name FROM users WHERE user_id IN (1,2,3,4,5...);
不论是 10、500 还是 10000 条评论数据都不重要,我们都依旧只执行两次SQL查询。
好了,你现在已经看到如何使用渴求式加载了。但只限于如何手动使用。你还可以将整个过程自动化,以便某些关联关系总是自动通过渴求式方式加载。为此,需要给模型设定一个属性。
protected $with = [];
我们可以在Comment
model简单设置 protected $with = ['user'];
, 从现在起,user
在任何时候都会自动加载。
我们还有很多种渴求式加载,有仅加载特定列、嵌套即时加载、多个即时加载等等。更多详情请Laravel文档或深入核心。
modelKeys 方法
有的时候需要查询所有的主键 ID, 查询是否复杂并不重要,大多数人可能会像这样做:
User::all()->pluck('id');
这个操作很 nice,但是返回的是一个集合,想要转换成数组的话可以使用 toArray()
。
User::all()->pluck('id')->toArray();
大多数情况下,上面的操作的可以简化成这样:
User::all()->modelKeys();
这种方式返回一个数组。重要的是这个方法并不会总是返回 id
。 顾名思义,他是以数组的形式返回所有模型主键。主键默认是id
,同时也可以在模型中定义主键名。
protected $primaryKey = 'id';
原文地址:https://laravel-news.com/6-eloquent-secrets
译文地址:https://www.php.cn/link/c7decb5ce28209911b545d0b1059c5e3
【相关推荐:laravel视频教程】
Atas ialah kandungan terperinci 6 Petua Laravel Fasih untuk membantu anda meningkatkan kebolehbacaan kod!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

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)

Topik panas



PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP tetap penting dalam pembangunan web moden, terutamanya dalam pengurusan kandungan dan platform e-dagang. 1) PHP mempunyai ekosistem yang kaya dan sokongan rangka kerja yang kuat, seperti Laravel dan Symfony. 2) Pengoptimuman prestasi boleh dicapai melalui OPCACHE dan NGINX. 3) Php8.0 memperkenalkan pengkompil JIT untuk meningkatkan prestasi. 4) Aplikasi awan asli dikerahkan melalui Docker dan Kubernet untuk meningkatkan fleksibiliti dan skalabiliti.

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP masih dinamik dan masih menduduki kedudukan penting dalam bidang pengaturcaraan moden. 1) kesederhanaan PHP dan sokongan komuniti yang kuat menjadikannya digunakan secara meluas dalam pembangunan web; 2) fleksibiliti dan kestabilannya menjadikannya cemerlang dalam mengendalikan borang web, operasi pangkalan data dan pemprosesan fail; 3) PHP sentiasa berkembang dan mengoptimumkan, sesuai untuk pemula dan pemaju yang berpengalaman.

Sebab mengapa PHP adalah timbunan teknologi pilihan untuk banyak laman web termasuk kemudahan penggunaannya, sokongan komuniti yang kuat, dan penggunaan yang meluas. 1) Mudah dipelajari dan digunakan, sesuai untuk pemula. 2) Mempunyai komuniti pemaju yang besar dan sumber yang kaya. 3) Digunakan secara meluas dalam platform WordPress, Drupal dan lain -lain. 4) Mengintegrasikan dengan ketat dengan pelayan web untuk memudahkan penggunaan pembangunan.

PHP dan Python masing -masing mempunyai kelebihan sendiri dan sesuai untuk senario yang berbeza. 1.PHP sesuai untuk pembangunan web dan menyediakan pelayan web terbina dalam dan perpustakaan fungsi yang kaya. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan standard yang kuat. Apabila memilih, ia harus diputuskan berdasarkan keperluan projek.

PHP digunakan untuk membina laman web dinamik, dan fungsi terasnya termasuk: 1. Menjana kandungan dinamik dan menghasilkan laman web secara real time dengan menyambung dengan pangkalan data; 2. Proses Interaksi Pengguna dan Penyerahan Bentuk, Sahkan Input dan Menanggapi Operasi; 3. Menguruskan sesi dan pengesahan pengguna untuk memberikan pengalaman yang diperibadikan; 4. Mengoptimumkan prestasi dan ikuti amalan terbaik untuk meningkatkan kecekapan dan keselamatan laman web.
