1. Form validation – Chỉ bắt lỗi đầu tiên
Mặc định, Laravel Validation sẽ trả về một mảng các chứa tất cả các lỗi (nếu có). Nếu chỉ muốn validation dừng lại ngay khi gặp lỗi đầu tiên, hãy sử dụng rule bail
:
1 2 3 4 5 | <span class="token variable">$request</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">validate</span><span class="token punctuation">(</span><span class="token punctuation">[</span> <span class="token single-quoted-string string">'title'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token single-quoted-string string">'bail|required|unique:posts|max:255'</span><span class="token punctuation">,</span> <span class="token single-quoted-string string">'body'</span> <span class="token operator">=</span><span class="token operator">></span> <span class="token single-quoted-string string">'required'</span><span class="token punctuation">,</span> <span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
2. Hạn chế update field
Nếu bạn có một field chỉ muốn đặt giá trị một lần, không cho phép update, bạn có thể đặt hạn chế vào Model bằng cách sử dụng mẹo sau:
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">class</span> <span class="token class-name">User</span> <span class="token keyword">extends</span> <span class="token class-name">Model</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">setEmailAttribute</span><span class="token punctuation">(</span><span class="token variable">$value</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">email</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">attributes</span><span class="token punctuation">[</span><span class="token single-quoted-string string">'email'</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$value</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
3. Chuẩn bị dữ liệu cho Form validation
Nếu bạn muốn sửa đổi dữ liệu input trước khi validation, có một method là prepareForValidation
trong class FormRequest
hỗ trợ điều này:
1 2 3 4 5 6 7 8 | <span class="token keyword">use</span> <span class="token package">IlluminateSupportStr</span><span class="token punctuation">;</span> <span class="token keyword">protected</span> <span class="token keyword">function</span> <span class="token function">prepareForValidation</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">merge</span><span class="token punctuation">(</span><span class="token punctuation">[</span> <span class="token single-quoted-string string">'slug'</span> <span class="token operator">=</span><span class="token operator">></span> Str<span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token function">slug</span><span class="token punctuation">(</span><span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">title</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
4. So sánh ngày với Carbon
Nếu bạn có một bảng events với các trường start_date và end_date, và bạn muốn kiểm tra xem có event nào diễn ra vào ngày hôm nay không:
1 2 3 4 5 6 | <span class="token variable">$startOfDay</span> <span class="token operator">=</span> <span class="token function">now</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">startOfDay</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> Event<span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token function">whereDate</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'start_date'</span><span class="token punctuation">,</span> <span class="token single-quoted-string string">'>='</span><span class="token punctuation">,</span> <span class="token variable">$startOfDay</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span><span class="token function">whereDate</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'end_date'</span><span class="token punctuation">,</span> <span class="token single-quoted-string string">'<='</span><span class="token punctuation">,</span> <span class="token variable">$startOfDay</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">></span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
5. Nhóm theo chữ cái đầu tiên
Bạn có thể nhóm dữ liệu Eloquent theo các điều kiện tuỳ ý, đây là ví dụ nhóm theo chữ cái đầu tiên của tên người dùng.
1 2 3 4 | <span class="token variable">$users</span> <span class="token operator">=</span> User<span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token function">all</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">groupBy</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token variable">$item</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$item</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">name</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
6. SoftDeletes và Query Builder
Chú ý rằng SoftDeletes chỉ hoạt động với Eloquent, không hoạt động với Query Builder .
1 2 3 4 5 6 | <span class="token comment">// Loại trừ các bản ghi bị soft delete</span> <span class="token variable">$users</span> <span class="token operator">=</span> User<span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token function">all</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// KHÔNG loại trừ các bản ghi bị soft delete</span> <span class="token variable">$users</span> <span class="token operator">=</span> <span class="token constant">DB</span><span class="token punctuation">:</span><span class="token punctuation">:</span><span class="token function">table</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'users'</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">></span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |