文章彙整

Magento 2 ORM 架構淺談 (3)

By Astral Web 10 months agoNo Comments
首頁  /  Magento  /  Magento-2  /  Magento 2 ORM 架構淺談 (3)

在上一次的文章中,我們介紹了Collection 中 Select 子句的應用,接下來要介紹的是使用 Model 操作新增(Insert)、修改(Update)及刪除(delete)的方法。

章節

Magento 2 ORM 架構淺談 (1)

Magento 2 ORM 架構淺談 (2)

Magento 2 ORM 架構淺談 (3)

 

1.什麼是 Model  :

Model 在 Magento 內可以說是一個 實體( Entity ),無論是新增、修改、及刪除的方法,都可以透過 Entity 來操作。

 

2.取得 Model 的方式:

在第一篇的文章裡面,我們有提到兩種方式可以取得 Collection ,一種是宣告 Model,透過 getCollection() 的 Method 來取得,另外一種就是直接宣告 Colleciton 類別。而我們今天要使用的 Model ,就是透過宣告 Model 的方式來取得(疑?很抽象嗎?我們用程式來說明吧!)

<?php

       /*
        * Object Manager 是為了示範上較為方便
        * 官方是較不建議這麼做的
        * 在實作過程中,應該使用 DI 的方式注入
        * */
       /* @var $employeeEntity \Astralweb\ORM\Model\Employee */
       $objectManager = ObjectManager::getInstance();
       $employeeEntity = $objectManager->get('Astralweb\ORM\Model\Employee');

 

3.使用 Model 新增資料

需要新增資料,使用addData() 方法即可,最後要記得使用save()方法,這樣才會真正存入資料庫內(切記!)

/*
        * 新增 (Insert) 資料
        * */
       $employeeEntity = $objectManager->get('Astralweb\ORM\Model\Employee');
       $employeeEntity->addData([
           'name' => '歐斯瑞',
           'department' => '工程部',
           'age' => '18',
           'gender' => '男',
           'id' => 'A123456789',
           'phone' => '02-27926381',
       ])->save();

 

4.使用 Model 刪除資料

刪除資料有兩種方式,如果已經知道 刪除資料的 id ,可以直接使用load()方法,帶入 id 的值,接著使用delete() 方法刪除資料

   /*
       * 刪除 (delete) 資料
       * */
       $employeeEntity = $objectManager->get('Astralweb\ORM\Model\Employee');
       $employeeEntity->load(1)->delete();

 

如果要刪除多筆資料,並且配合查詢子句的話,就要使用第二種方法,一樣是透過 Collection 下完查詢條件後刪除,程式範例如下:

 /* 使用collection 方法刪除*/
       /* @var $employees \Astralweb\ORM\Model\Employee[] */
       $employees = $employeeCollection
           ->addFieldToSelect('*')
           ->addFieldToSelect('gender', '男')
           ->getItems();

       foreach ($employees as $employee) {
           $employee->delete();
       }

 

5.使用 Model 更新資料

下面範例是使用Model 修改 entityId 等於 1  的資料,如果是多筆資料需要更改,也可以使用 Collection 的方法

  /*
        * 更新(update)資料
        * */
       $employeeEntity = $objectManager->get('Astralweb\ORM\Model\Employee');
       $employeeEntity
           ->load(1)
           ->setData([
               'name' => '歐斯瑞',
               'department' => '工程部',
           ])->save();

 

大致上介紹到這邊,以上這三篇就是使用 Magento 透過 ORM  的方法來操作資料庫,如果你會了此方法,以後就可以不用純 SQL 來執行唷,不但增加了程式的閱讀性及維護性,也大幅提升了程式的安全性,是防止 SQL Injection 攻擊的好方法

 

以上範例程式皆放在 Github 上,傳送門如下:

Github

想要學習更多Magento相關知識,請參考:Magento 教學導覽

以上內容由Astralweb 歐斯瑞編寫製作

 000

推薦文章

Category:
  Magento-2

留下回應

你的電子郵件地址不會被公開.

取得獨家電子商務祕技

建立更好的策略靈感

跟上全球的網路趨勢

絕佳的電商解決方案

電子商務戰略全指南

每月發送電商戰略指南,只要填寫E-mail即可訂閱!

請到您的信箱確認,即可完成訂閱。