搜尋
首頁php框架LaravelLaravel Eloquent的技巧分享(範例講解)

這篇文章帶給大家的內容是關於Laravel Eloquent的技巧分享(範例講解),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

Laravel 是一個功能豐富的框架。但是,你無法從官方文件中找到所有可用的功能。以下是一些你可能不知道的功能。

1.取得原始屬性

當修改一條Eloquent 模型記錄的時候你可以透過呼叫 getOriginal() 方法來取得記錄的原始屬性

$user = App\User::first();
$user->name;                   //John

$user->name = "Peter";         //Peter

$user->getOriginal('name');    //John
$user->getOriginal();          //原始 $user 记录

2. 檢查模型是否已修改

使用 isDirty() 方法確定模型或給定屬性是否已被修改

$user = App\User::first();
$user->isDirty();          //false

$user->name = "Peter";
$user->isDirty();          //true

也可以檢查指定屬性是否被修改。

$user->isDirty('name');    //true
$user->isDirty('age');     //false

3. 取得變更的屬性

使用 getChanges() 取得變更的屬性

$user->getChanges()

//[
     "name" => "Peter",
  ]
附註:僅當您使用 syncChanges() 儲存模型或同步更新時,才生效

4. 定義 deleted_at 欄位

預設情況下,Laravel使用deleted_at欄位處理軟體刪除。您可以透過定義DELETED_AT屬性來變更它。

class User extends Model
{
    use SoftDeletes;

     * The name of the "deleted at" column.
     *
     * @var string
     */
    const DELETED_AT = 'is_deleted';
}

或定義存取

class User extends Model
{
    use SoftDeletes;

    public function getDeletedAtColumn()
    {
        return 'is_deleted';
    }
}

5. 保存模型和關係

您可以使用push()方法保存模型及其關聯。

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

$user = User::first();
$user->name = "Peter";

$user->phone->number = '1234567890';

$user->push(); // 这将更新数据库中的用户和电话

6. 重新載入模型

使用 fresh() 重新從資料庫載入一個模型。

$user = App\User::first();
$user->name;               // John

// user 表被其他进程修改。 例:数据库又插入一条 “name” 为 “Peter” 的数据。

$updatedUser = $user->fresh();
$updatedUser->name;       // Peter

$user->name;              // John

7. 重新載入現有模型

你可以使用 refresh() 方法從資料庫重新載入現有新值的模型。

$user = App\User::first();
$user->name;               // John

// user 表被其他进程修改。例: “name” 被修改为 “Peter” 。

$user->refresh();
$user->name;              // Peter
註: refresh() 也會更新模型的關聯模型資料。

8. 檢查模型是否為同一個

使用 is() 方法確定兩個模型是否擁有相同主鍵且屬於同一張表。

$user = App\User::find(1);
$sameUser = App\User::find(1);
$diffUser = App\User::find(2);

$user->is($sameUser);       // true
$user->is($diffUser);       // false

9. 複製一個模型

你可以使用 replicate() 方法複製一個模型到一個新的物件中。

$user = App\User::find(1);
$newUser = $user->replicate();

$newUser->save();

10. 在 find() 方法中指定尋找的屬性

當使用 find() 或 findOrFail() 方法時,傳入第二個參數可以指定需要尋找的屬性。

$user = App\User::find(1, ['name', 'age']);

$user = App\User::findOrFail(1, ['name', 'age']);

#

以上是Laravel Eloquent的技巧分享(範例講解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
技術問題:確保公平地訪問分佈式團隊成員的工具和資源技術問題:確保公平地訪問分佈式團隊成員的工具和資源Apr 29, 2025 am 12:40 AM

確保分佈式團隊成員公平獲取工具和資源的方法包括:1)使用低帶寬替代方案,如異步視頻或文本更新,解決連接問題;2)設立核心重疊工作時間,並提供靈活工作時間,管理時區差異;3)通過翻譯功能和文化意識培訓,適應不同文化需求。這些策略有助於創建一個包容和高效的遠程工作環境。

即時消息必備:在遠程設置中促進實時通信即時消息必備:在遠程設置中促進實時通信Apr 29, 2025 am 12:38 AM

ForenHancingRemoteCollaboration,AninStantMessagingToolMusThave:1)可靠性ForConsistentMessageDelivery,2)AnintuiveduserInterInterInterterfaceForeasyNavigation,3)Real-Timenotificationstostostostostostostostostostostostostostostostostostayupdated,4)SeamelesselessfileSlessFileSlessFileSlessFileSlesselessFileSleSlessForefliceForefliceDocumentExchange,5)集成

在分佈式團隊中工作時,您是否曾面臨任何挑戰?在分佈式團隊中工作時,您是否曾面臨任何挑戰?Apr 29, 2025 am 12:35 AM

Thebiggestchallengeofmanagingdistributedteamsiscommunication.Toaddressthis,usetoolslikeSlack,Zoom,andGitHub;setclearexpectations;fostertrustandautonomy;implementasynchronousworkpatterns;andintegratetaskmanagementwithcommunicationplatformsforefficient

新的Laravel版本有什麼安全性改進?新的Laravel版本有什麼安全性改進?Apr 29, 2025 am 12:17 AM

Laravel的最新版本在安全性方面有显著提升,包括:1.增强的CSRF保护,通过更robust的token验证机制;2.改进的SQL注入防护,通过增强的查询构建方法;3.更好的会话加密,确保用户数据安全;4.改进的认证系统,支持更细粒度的用户认证和多因素认证(MFA)的实现。

時區探戈:在全球勞動力中導航計劃衝突時區探戈:在全球勞動力中導航計劃衝突Apr 29, 2025 am 12:13 AM

TonavigatesChedulingConflictSinaglobalworkforce,Usetechnology,Ensathy and Strategicplanning:1)hosporlikeTimeBuddyorCalendlyForscheduling; 2)RotateMeetingTimeStoEnsurefairness; 3)spentCoreSurefair; 3)specoreCoreHoursibible foreverlap; 4)

Laravel的全堆棧開發:管理API和前端邏輯Laravel的全堆棧開發:管理API和前端邏輯Apr 28, 2025 am 12:22 AM

在Laravel全棧開發中,管理API和前端邏輯的有效方法包括:1)使用RESTful控制器和資源路由管理API;2)通過Blade模板和Vue.js或React處理前端邏輯;3)通過API版本控制和分頁優化性能;4)保持後端和前端邏輯分離,確保可維護性和可擴展性。

翻譯失落:分佈式團隊中的文化細微差別和誤解翻譯失落:分佈式團隊中的文化細微差別和誤解Apr 28, 2025 am 12:22 AM

TotackleculturalIntricaciesIndistributedTeams,fosteranenvironmentcelebratingDifferences,BemindfulofCommunication,andusetoolsforclarity.1)ImpartimentCulturalexchangessessionStossessessionStosharestories andraditions.2)

測量連接:分析和見解遠程通信有效性測量連接:分析和見解遠程通信有效性Apr 28, 2025 am 12:16 AM

Toassesstheeffectivenessofremotecommunication,focuson:1)Engagementmetricslikemessagefrequencyandresponsetime,2)Sentimentanalysistogaugeemotionaltone,3)Meetingeffectivenessthroughattendanceandactionitems,and4)Networkanalysistounderstandcommunicationpa

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版