成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

TP5學(xué)習(xí)記錄(Model篇)

bingo / 2841人閱讀

摘要:數(shù)據(jù)庫操作數(shù)據(jù)庫連接在設(shè)置數(shù)據(jù)庫連接參數(shù)或者利用方法設(shè)置數(shù)據(jù)庫連接數(shù)據(jù)庫初始化,并取得數(shù)據(jù)庫類實例數(shù)據(jù)庫配置信息數(shù)組,可以在該方法里面進行配置數(shù)據(jù)庫查找直接操作語句描述查詢語句,然后類型語句字符串語句中綁定的字符串常用查詢語句返回所有記錄,

ThinkPHP

數(shù)據(jù)庫操作

數(shù)據(jù)庫連接

#在config/database.php設(shè)置數(shù)據(jù)庫連接參數(shù)或者利用Db::connect()方法設(shè)置數(shù)據(jù)庫連接

/*
 * public static function connect($config = [], $name = false)
 * 數(shù)據(jù)庫初始化,并取得數(shù)據(jù)庫類實例
 * $config:數(shù)據(jù)庫配置信息數(shù)組,可以在該方法里面進行配置
 */
#
var_dump(Db::connect());

數(shù)據(jù)庫查找

query:直接操作sql語句

/*
 * mixed query(string $sql, array $bind = [], boolean $master = false, bool $pdo = false)
 * 描述:SQL查詢語句,然后array類型
 * $sql:SQL語句字符串
 * $bind:SQL語句中綁定的字符串
 */
$res = Db::query("select * from book where id=?", [1001]);    

常用查詢語句

# select 返回所有記錄,返回的結(jié)果是一個二維數(shù)組
# 如果結(jié)果不存在,返回一個空數(shù)組"[]"
$res = Db::table("book") ->where([
    "id"    => "1001"
])->select();

$res = db("book") ->where([
    "id"    => "1001"
])->select();   #功能同上

# find 返回一條記錄,返回的結(jié)果是一個一維數(shù)組
# 如果結(jié)果不存在,返回null
$res = Db::table("book") ->where([
    "id"    => "1002"
])->find();

$res = db("book") ->where([
    "id"    => "1001"
])->find();     #功能同上

# value 返回一條記錄,并且是這條記錄的某個字段值
# 如果結(jié)果不存在,返回null
$res = Db::table("book") ->where([
    "id" => "1001"
])->value("name");

$res = db("book") ->where([
    "id"    => "1001"
])->value("name");     #功能同上

# column 返回一個一緯數(shù)組,數(shù)組中的value值就是我們要獲取列的值
# 如果結(jié)果不存在,返回空數(shù)組"[]"
$res = Db::table("book") -> where([
    "id" => "1001"
]) -> column("name");

$res = db("book") ->where([
    "id"    => "1001"
])->column("name");     #功能同上

數(shù)據(jù)庫添加
execute:直接操作sql語句

/*
 * integer execute(string $sql, array $bind = [], boolean $fetch = false, boolean $getLastInsID = false, string $sequence = null)
 * 描述:SQL更新語句
 * $sql:SQL語句字符串
 * $bind:SQL語句中綁定的字符串
 */
$res = Db::execute("select * from book where id=?", [1002]);

常用插入語句

public function insert()
{
    //指定數(shù)據(jù)庫表,獲取表資源
    $db = Db::name("book");

    # $db ->insert():插入單條記錄,返回是影響記錄的行數(shù)
    # $db ->insertGetId():插入單條記錄,返回的是插入記錄的id
    # $db ->insertAll():批量插入

    //inset 返回值是影響記錄的行數(shù),插入數(shù)
    $res = $db ->insert([
        "id"        => "1005",
        "name"      => "書籍5",
        "type_id"   => "1",
        "author"    => "趙六",
        "press"     => "牛津大學(xué)出版社"
    ]);
    
    dump($res);
}

數(shù)據(jù)庫更新

public function update()
{
    //指定數(shù)據(jù)庫表
    $db = Db::name("book");

    # $db->update()
    # 更新記錄某一個或幾個字段,返回值為影響記錄的行數(shù)
    $res = $db ->where([
        "id" => 1001
    ])->update([
        "author" => "比克"
    ]);

    # $db->setField()
    # 更新記錄下某一個字段的值,返回值為影響記錄的行數(shù)
    $res = $db ->where([
        "id" => 1001
    ])->setField("name", "書籍111");

    # $db->setInc()
    # 更新記錄下某一個字段按固定步長增長,返回值為影響記錄的行數(shù)
    $res = $db ->where([
        "id" => 1001
    ]) ->setInc("type_id", "2");

    # $db->setDec()
    # 更新記錄下某一個字段按固定步長減小,返回值為影響記錄的行數(shù)
    $res = $db ->where([
        "id" => 1001
    ]) ->setDec("type_id", "2");

    dump($res);
}

數(shù)據(jù)庫刪除

public function delete()
{
    //指定數(shù)據(jù)庫表
    $db = Db::name("book");

    #返回值為影響記錄的行數(shù)
    $res = $db->where([
        "id" => 1001
    ])->delete();

    #如果where條件中是主鍵,則可以寫為:
    $res = $db->delete("1002");

    dump($res);
}

鏈式操作

$res3 = Db::table("book")
        -> where("id", ">", "1004")     #查詢條件where($field, $op, $condition)
        -> field("name, press")         #過濾條件field
        -> order("id DESC")             #排序方式order,DESC降序,ASC升序
       # -> limit(3, 5)                  #記錄條數(shù)限制limit
       # -> page(2,5)                    #分頁功能page
        -> group("press")               #分組group
        -> select();


模型

獲取model對象

public function requireModel()
{
    #方式1:使用助手函數(shù)獲取model實例對象
    $book = model("Book");
    $book1 = $book::get("1001");

    #方式2:使用Loader獲取model實例對象
    $book = Loader::model("Book");
    $book2 = $book::get("1001");

    #方式3:使用new方法獲取實例對象
    $book = new Book();
    $book3 = $book::get("1001");

    #方式4:靜態(tài)方法直接獲取實例對象(推薦使用)
    $book4 = Book::get(1001);

    dump($book1->toArray());
    dump($book2->toArray());
    dump($book3->toArray());
    dump($book4->toArray());
}

模型查詢數(shù)據(jù)

public function getBook($bookId)
{
    #get進行查找單條記錄
    $book = Book::get($bookId);             #方法1
    $book = Book::get(function ($query){    #方法2
        $query->where("id", ">", 1001)
            ->field("name");
    });
    $name = $book->name;        #調(diào)用模型的屬性
    $res = $book->toArray();    #將模型轉(zhuǎn)換為數(shù)組

    #get獲取批量記錄
    $books = Book::all();
    $book = Book::all(function ($query){    #方法2
        $query->where("id", ">", 1001)
            ->field("name");
    });
    foreach ($books as $value)
    {
        #遍歷循環(huán)打印
        #dump($value->toArray());
    }

    #和Db相似的鏈式方法:find()方法查找單條記錄
    $res = Book::where("id", "=", "1001")
            ->field("name, author")
            ->find();
    #dump($res->toArray());

    #select()方法查找多條記錄
    $res = Book::where("id", ">", "1001")
        ->field("name, author")
        ->select();
    foreach ($res as $value)
    {
        #遍歷循環(huán)打印
        #dump($value->toArray());
    }

    #value():獲取單條記錄某個字段的值
    $res = Book::value("press");

    #column():所有多條記錄某個字段的值
    $res = Book::column("press", "press");
    dump($res);
}

模型添加數(shù)據(jù)

public function insertBook($bookId)
{
    #方式1:Book::create插入單條數(shù)據(jù)
    $book = Book::create([
        "id"            => $bookId,
        "name"          => "書籍21",
        "type_id"       => 1,
        "author"        => "作者{$bookId}",
        "press"         => "清華大學(xué)出版社"
    ]);

    #方式2:save()插入單條數(shù)據(jù)
    $book = new Book();
    $book->id = 1000 + (integer)($bookId);
    $book->name = "書籍{$bookId}";
    $book->type_id = 1;
    $book->author = "作者{$bookId}";
    $book->press = "清華大學(xué)出版社";
    $book->save();

    $book1 = new Book();    #插入快捷方式
    $book1->save([
        "id"            => 1000 + (integer)($bookId),
        "name"          => "書籍{$bookId}",
        "type_id"       => 1,
        "author"        => "作者{$bookId}",
        "press"         => "清華大學(xué)出版社"
    ]);

    #方式3:saveAll()插入批量數(shù)據(jù)
    $res = $book1 ->saveAll([
        [
            "name"          => "書籍{$bookId}",
        ],
        [
            "name"          => "書籍{$bookId}",
        ]
    ]);

    dump($res);
}

模型更新數(shù)據(jù)

public function updateBook()
{
    //更新數(shù)據(jù)
    $res = Book::update([
        "author" => "作者11"
    ], function ($query){
        $query->where("id", "=", "1001");
    });


    #更新數(shù)據(jù)
    $res = Book::where("id", "=", "1002")
        ->update([
            "author" => "作者22"
        ]);

    #通過save()來更新已經(jīng)有的model
    $book = Book::get(1001);
    $book ->author = "作者1";
    $book ->save();

    dump($book->toArray());
}

模型刪除數(shù)據(jù)

public function deleteBook()
{
    #Book::destroy()

    #如果當(dāng)前表存在主鍵,直接傳值
    #$res = Book::destroy(1001);

    #如果當(dāng)前表不存在主鍵,則可以根據(jù)$query函數(shù)進行條件刪除
    #$res = Book::destroy(function ($query){
    #    $query->where("id", "=", "1002");
    #});

    #通過實例進行刪除
    #$book = Book::get(1003);
    #$res = $book ->delete();

    #通過where條件進行刪除
    $res = Book::where("id", ">", 1000)
            ->delete();

    dump($res);
    
}

模型聚合操作

class Book extends Model
{
    #屬性和數(shù)據(jù)庫表字段映射
    protected $createTime = "create_time";
    protected $updateTime = "update_time";

    #獲取器:讀取數(shù)據(jù)庫中值的時候,在值的基礎(chǔ)上進行修改
    public function getSexAttr($var)
    {
        switch ($var) {
            case 0:
                return "男";
                break;
            case 1:
                return "女";
                break;
            default:
                return "未知";
                break;
        }
    }

    #修改器:對寫入數(shù)據(jù)庫中值進行修改
    public function setPasswordAttr($var)
    {
        return md5($var);
    }


    #自動完成功能
    protected $auto = [     #數(shù)據(jù)插入或更新的時候,對字段進行更新

    ];

    protected $insert = [   #插入時候,對字段進行更新
        "create_time"
    ];

    protected $update = [   #更新時候,對字段進行更新
        "modify_time"
    ];

    #綁定數(shù)據(jù)庫中create_time字段
    public function setCreateTimeAttr($var)
    {
        return time();
    }

    #綁定數(shù)據(jù)庫中modify_time字段
    public function setModifyTimeAttr($var)
    {
        return time();
    }
}

了解:SoftDelete(軟刪除)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28748.html

相關(guān)文章

  • TP5學(xué)習(xí)記錄(Controller

    摘要:可以在入口文件中定義,然后新建文件夾,達到將應(yīng)用配置放到該文件的目的,這樣方便將配置進行統(tǒng)一管理。動態(tài)配置返回數(shù)據(jù)類型功能同上張三男請求成功 ThinkPHP5 ThinkPHP是一個免費開源的、快速簡單的、面向?qū)ο蟮摹⑤p量級PHP開發(fā)框架。 為什么選擇ThinkPHP5? ThinkPHP5采用了全新的架構(gòu)思想; 優(yōu)化了核心是一個顛覆性的版本; 支持composer方式安裝; 對...

    leone 評論0 收藏0
  • TP5實現(xiàn)表格拖動排序并保存到數(shù)據(jù)庫功能

    摘要:于是我就研究如何拖動排序并永久把排序保存到數(shù)據(jù)庫中,做了小時,做出來了?,F(xiàn)在只是實現(xiàn)了在當(dāng)前頁面排序,但數(shù)據(jù)庫還是老樣子。在每次拖動完成后,利用這款插件內(nèi)置的函數(shù),通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫(yī)生的職稱排序。因為客戶的這個項目是醫(yī)院的人事系統(tǒng),考慮到整個醫(yī)院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...

    Aomine 評論0 收藏0
  • TP5實現(xiàn)表格拖動排序并保存到數(shù)據(jù)庫功能

    摘要:于是我就研究如何拖動排序并永久把排序保存到數(shù)據(jù)庫中,做了小時,做出來了。現(xiàn)在只是實現(xiàn)了在當(dāng)前頁面排序,但數(shù)據(jù)庫還是老樣子。在每次拖動完成后,利用這款插件內(nèi)置的函數(shù),通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫(yī)生的職稱排序。因為客戶的這個項目是醫(yī)院的人事系統(tǒng),考慮到整個醫(yī)院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...

    nevermind 評論0 收藏0
  • TP5實現(xiàn)表格拖動排序并保存到數(shù)據(jù)庫功能

    摘要:于是我就研究如何拖動排序并永久把排序保存到數(shù)據(jù)庫中,做了小時,做出來了?,F(xiàn)在只是實現(xiàn)了在當(dāng)前頁面排序,但數(shù)據(jù)庫還是老樣子。在每次拖動完成后,利用這款插件內(nèi)置的函數(shù),通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫(yī)生的職稱排序。因為客戶的這個項目是醫(yī)院的人事系統(tǒng),考慮到整個醫(yī)院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...

    zhiwei 評論0 收藏0
  • TP5實現(xiàn)表格拖動排序并保存到數(shù)據(jù)庫功能

    摘要:于是我就研究如何拖動排序并永久把排序保存到數(shù)據(jù)庫中,做了小時,做出來了?,F(xiàn)在只是實現(xiàn)了在當(dāng)前頁面排序,但數(shù)據(jù)庫還是老樣子。在每次拖動完成后,利用這款插件內(nèi)置的函數(shù),通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫(yī)生的職稱排序。因為客戶的這個項目是醫(yī)院的人事系統(tǒng),考慮到整個醫(yī)院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...

    wudengzan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<