Laravel中9個(gè)不經(jīng)常用的小技巧匯總
前言
眾所周知Laravel是一套簡(jiǎn)潔、優(yōu)雅的PHP Web開(kāi)發(fā)框架(PHP Web Framework)。下面這篇文章主要給大家總結(jié)了一些Laravel不經(jīng)常用的小技巧,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
1. 更新父表的timestamps
如果你想在更新關(guān)聯(lián)表的同時(shí),更新父表的timestamps,你只需要在關(guān)聯(lián)表的model中添加touches屬性。
比如我們有Post和Comment兩個(gè)關(guān)聯(lián)模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
/**
* 要更新的所有關(guān)聯(lián)表
*
* @var array
*/
protected $touches = ['post'];
/**
* Get the post that the comment belongs to.
*/
public function post()
{
return $this->belongsTo('App\Post');
}
}
2. 懶加載指定字段
$posts = App\Post::with('comment:id,name')->get();
3. 跳轉(zhuǎn)指定控制器并附帶參數(shù)
return redirect()->action('SomeController@method', ['param' => $value]);
4. 關(guān)聯(lián)時(shí)使用withDefault()
在調(diào)用關(guān)聯(lián)時(shí),如果另一個(gè)模型不存在,系統(tǒng)會(huì)拋出一個(gè)致命錯(cuò)誤,例如 $comment->post->title,那么我們就需要使用withDefault()
...
public function post()
{
return $this->belongsTo(App\Post::class)->withDefault();
}
5. 兩層循環(huán)中使用$loop
在blade的foreach中,如果你想獲取外層循環(huán)的變量
@foreach ($users as $user) @foreach ($user->posts as $post) @if ($loop->parent->first) This is first iteration of the parent loop. @endif @endforeach @endforeach
6. 瀏覽郵件而不發(fā)送
如果你使用的是mailables來(lái)發(fā)送郵件,你可以只展示而不發(fā)送郵件
Route::get('/mailable', function () {
$invoice = App\Invoice::find(1);
return new App\Mail\InvoicePaid($invoice);
});
7. 通過(guò)關(guān)聯(lián)查詢記錄
在hasMany關(guān)聯(lián)關(guān)系中,你可以查詢出關(guān)聯(lián)記錄必須大于5的記錄
$posts = Post::has('comment', '>', 5)->get();
8. 軟刪除
查看包含軟刪除的記錄
$posts = Post::withTrashed()->get();
查看僅被軟刪除的記錄
$posts = Post::onlyTrashed()->get();
恢復(fù)軟刪除的模型
Post::withTrashed()->restore();
9. Eloquent時(shí)間方法
$posts = Post::whereDate('created_at', '2018-01-31')->get();
$posts = Post::whereMonth('created_at', '12')->get();
$posts = Post::whereDay('created_at', '31')->get();
$posts = Post::whereYear('created_at', date('Y'))->get();
$posts = Post::whereTime('created_at', '=', '14:13:58')->get();
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
PHP動(dòng)態(tài)輸出JavaScript代碼實(shí)例
這篇文章主要介紹了PHP動(dòng)態(tài)輸出JS代碼實(shí)例,本文直接給出代碼實(shí)例,一看就懂,簡(jiǎn)潔明了,需要的朋友可以參考下2015-02-02
php 網(wǎng)上商城促銷(xiāo)設(shè)計(jì)實(shí)例代碼
前一篇文章講的是購(gòu)物車(chē)的設(shè)計(jì),這篇來(lái)講下關(guān)于促銷(xiāo)的。支持的促銷(xiāo)類似于,打折,買(mǎi)幾贈(zèng)幾,滿多少錢(qián)送禮品等等。用到策略模式2012-02-02
ThinkPHP結(jié)合AjaxFileUploader實(shí)現(xiàn)無(wú)刷新文件上傳的方法
這篇文章主要介紹了ThinkPHP結(jié)合AjaxFileUploader實(shí)現(xiàn)無(wú)刷新文件上傳的方法,是ThinkPHP文件上傳中一個(gè)比較典型的應(yīng)用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10
PHP實(shí)現(xiàn)字母數(shù)字混合驗(yàn)證碼功能
PHP實(shí)現(xiàn)字母數(shù)字混合驗(yàn)證碼,支持自定義驗(yàn)證碼、驗(yàn)證碼圖片、寬度、高度、個(gè)數(shù)、背景圖片,本文給大家分享實(shí)例代碼,感興趣的朋友跟隨小編一起看看吧2019-07-07

