Laravel is probably not new to PHP Developer anymore, it’s a framework that I think is probably the best of PHP with a lot of features. But not everything Laravel can do is included in its documentation. Here are some features you may not know about
1. getOriginal ()
After altering a variable from a Model by assigning a new value to its element, you can still get the original value of that element using getOriginal
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token variable">$post</span> <span class="token operator">=</span> Post <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">find</span> <span class="token punctuation">(</span> <span class="token variable">$id</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</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 comment">//Đây là tiêu đề bài viết</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">title</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'Đây là tiêu đề đã được chỉnh sửa'</span> <span class="token punctuation">;</span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</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 comment">//'Đây là tiêu đề đã được chỉnh sửa</span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">getOriginal</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'title'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token comment">//Đây là tiêu đề bài viết </span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</span> <span class="token punctuation">)</span> <span class="token comment">//Kết quả ban đầu của $post</span> |
2. isDirty ()
Check if the value of a variable taken from the Model has been changed (It sounds like watching if the soul has been corrupted) )
1 2 3 4 5 6 7 8 9 10 | <span class="token variable">$post</span> <span class="token operator">=</span> Post <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">find</span> <span class="token punctuation">(</span> <span class="token variable">$id</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">isDirty</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token comment">//false</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">title</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'Đây là tiêu đề đã được chỉnh sửa'</span> <span class="token punctuation">;</span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">isDirty</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token comment">//true</span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">isDirty</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'title'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token comment">//true</span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">isDirty</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'content'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token comment">//false</span> |
3. Change the column name ‘deleted_at’
If you use the solf delete
in Laravel, the time your data is deleted will be saved in the deleted_at
column. If you want to rename that column, do the following
1 2 3 4 5 6 7 | <span class="token keyword">class</span> <span class="token class-name">Post</span> <span class="token keyword">extends</span> <span class="token class-name">Model</span> <span class="token punctuation">{</span> <span class="token keyword">use</span> <span class="token package">SoftDeletes</span> <span class="token punctuation">;</span> <span class="token keyword">const</span> <span class="token constant">DELETED_AT</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'delete_time'</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
4. push ()
You can save the price of a result from the model and its relationship. I will have the relationship between the article and the author is 1 lot: 1 article will have 1 author. In the Post
model
1 2 3 4 5 6 7 8 | <span class="token keyword">class</span> <span class="token class-name">Post</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">author</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">belongTo</span> <span class="token punctuation">(</span> Author <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token keyword">class</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
The processing will be as follows
1 2 3 4 5 | <span class="token variable">$post</span> <span class="token operator">=</span> Post <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">find</span> <span class="token punctuation">(</span> <span class="token variable">$id</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">title</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'Title 1'</span> <span class="token punctuation">;</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">author</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">last_action_time</span> <span class="token operator">=</span> Carbon <span class="token punctuation">:</span> <span class="token punctuation">:</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">toDateTimeString</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">push</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">//Cập nhập cả 2 bảng posts và authors trong DB</span> |
5. is ()
Help you check for 2 values from the model
1 2 3 4 5 6 7 | <span class="token variable">$post</span> <span class="token operator">=</span> Post <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">find</span> <span class="token punctuation">(</span> <span class="token number">1</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$samePost</span> <span class="token operator">=</span> Post <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">find</span> <span class="token punctuation">(</span> <span class="token number">1</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$otherPost</span> <span class="token operator">=</span> Post <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">find</span> <span class="token punctuation">(</span> <span class="token number">10</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">is</span> <span class="token punctuation">(</span> <span class="token variable">$samePost</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">//true;</span> <span class="token function">dump</span> <span class="token punctuation">(</span> <span class="token variable">$post</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">is</span> <span class="token punctuation">(</span> <span class="token variable">$otherPost</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">//false;</span> |
6. replicate ()
You can copy a value of a model and save it as a new record;
1 2 3 4 | $post = Post::find($id); $copiedPost = $post->replicate(); $copiedPost->save(); |
7. Select the values to retrieve from find ()
You can just retrieve the values you want, it will be the same as that instead of you select * from
then you select column1, column2, ... from
1 2 3 | <span class="token variable">$post</span> <span class="token operator">=</span> Post <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">find</span> <span class="token punctuation">(</span> <span class="token variable">$id</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token single-quoted-string string">'title'</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'content'</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$post</span> <span class="token operator">=</span> Post <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">findOrFail</span> <span class="token punctuation">(</span> <span class="token variable">$id</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token single-quoted-string string">'title'</span> <span class="token punctuation">,</span> <span class="token single-quoted-string string">'content'</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Above are some things I think will help you, thank you for reading
Reference: https://medium.com/@JinoAntony/10-hidden-laravel-eloquent-features-you-may-not-know-efc8ccc58d9e