TP5模型氯窍、視圖、模板

一蹲堂、模型和關(guān)聯(lián)

(一)基礎(chǔ)操作

  • 1狼讨、新增數(shù)據(jù)
    兩種方式新增用戶
<?php
namespace app\index\controller;
use app\index\model\User;
class UserController{
    // 新增用戶數(shù)據(jù)
    public function add(){
        $user           = new User;
        $user->nickname = '流年';
        $user->email    = 'thinkphp@qq.com';
        $user->birthday = strtotime('1977-03-05');
        $user->save()
    }
}
// 新增用戶數(shù)據(jù)
public function add(){
    $user['nickname'] = '看云';
    $user['email']    = 'kancloud@qq.com';
    $user['birthday'] = strtotime('2015-04-02');
    $result = UserModel::create($user)
}

create方法可以傳入數(shù)組或者標(biāo)準(zhǔn)對象,可以在外部統(tǒng)一賦值后傳入柒竞,當(dāng)然也可以直接傳入表單數(shù)據(jù)政供。

  • 2、批量新增
// 批量新增用戶數(shù)據(jù)
public function addList(){
    $user = new UserModel;
    $list = [
        ['nickname' => '張三', 'email' => 'zhanghsan@qq.com', 'birthday' => strtotime('1988-01-15')],
        ['nickname' => '李四', 'email' => 'lisi@qq.com', 'birthday' => strtotime('1990-09-19')],
    ];
    if ($user->saveAll($list)) {
        return '用戶批量新增成功';
    } else {
        return $user->getError();
    }
}
  • 3朽基、查詢數(shù)據(jù)
// 讀取用戶數(shù)據(jù)
public function read($id='')
{
    $user = UserModel::get($id);
    echo $user->nickname . '<br/>';
    echo $user->email . '<br/>';
    echo date('Y/m/d', $user->birthday) . '<br/>';
}

模型的get方法和Db類的find方法返回結(jié)果的區(qū)別在于布隔,Db類默認(rèn)返回的只是數(shù)組(注意這里說的默認(rèn),其實仍然可以設(shè)置為對象)稼虎,而模型的get方法查詢返回的一定是當(dāng)前的模型對象實例衅檀。

  • 4、數(shù)據(jù)列表
    查詢多個數(shù)據(jù)時霎俩,可以使用all方法:
// 獲取用戶數(shù)據(jù)列表
public function index()
{
    $list = UserModel::all();
    foreach ($list as $user) {
        echo $user->nickname . '<br/>';
        echo $user->email . '<br/>';
        echo date('Y/m/d', $user->birthday) . '<br/>';
        echo '----------------------------------<br/>';
    }
}

如果不是使用主鍵查詢术吝,可以直接傳入數(shù)組條件查詢

// 獲取用戶數(shù)據(jù)列表
public function index()
{
    $list = UserModel::all(['status'=>1]);
    foreach ($list as $user) {
        echo $user->nickname . '<br/>';
        echo $user->email . '<br/>';
        echo date('Y/m/d', $user->birthday) . '<br/>';
        echo '----------------------------------<br/>';
    }
}

也可以使用閉包并配合查詢構(gòu)建器完成更多的條件查詢

// 獲取用戶數(shù)據(jù)列表
public function index()
{
    $list = UserModel::all(function($query){
        $query->where('id', '<', 3)->order('id', 'desc');
    });
    foreach ($list as $user) {
        echo $user->nickname . '<br/>';
        echo $user->email . '<br/>';
        echo date('Y/m/d', $user->birthday) . '<br/>';
        echo '----------------------------------<br/>';
    }
}
  • 5、刪除數(shù)據(jù)
// 刪除用戶數(shù)據(jù)
public function delete($id)
{
    $user = UserModel::get($id);
    if ($user) {
        $user->delete();
        return '刪除用戶成功';
    } else {
        return '刪除的用戶不存在';
    }
}

同樣我們也可以直接使用destroy方法刪除模型數(shù)據(jù)

// 刪除用戶數(shù)據(jù)
public function delete($id)
{
    $result = UserModel::destroy($id);
    if ($result) {
        return '刪除用戶成功';
    } else {
        return '刪除的用戶不存在';
    }
}

(二)讀取器和修改器

  • 1茸苇、讀取器:在讀取數(shù)據(jù)時為讀取到的數(shù)據(jù)設(shè)置一定的輸出格式排苍;
    讀取器的命名規(guī)范:get + 屬性名的駝峰命名+ Attr
<?php
namespace app\index\model;
use think\Model;
class User extends Model{
    // birthday讀取器
    protected function getBirthdayAttr($birthday){
        return date('Y-m-d', $birthday);
    }
}

讀取器定義完后,修改控制器中方法:

// 讀取用戶數(shù)據(jù)
public function read($id='')
{
    $user = UserModel::get($id);
    echo $user->nickname . '<br/>';
    echo $user->email . '<br/>';
    echo $user->birthday . '<br/>';
}
  • 2学密、修改器
    命名規(guī)則:set + 屬性名的駝峰命名+ Attr
    上述birthday是整型格式的淘衙,每次進(jìn)行復(fù)制時都要進(jìn)行轉(zhuǎn)換,因此用修改器解決以上問題
<?php
namespace app\index\model;
use think\Model;
class User extends Model{
    // 讀取器
    protected function getUserBirthdayAttr($birthday, $data){
        return date('Y-m-d', $data['birthday']);
    }
    // birthday修改器
    protected function setBirthdayAttr($value){
        return strtotime($value);
    }
}

(三)類型轉(zhuǎn)換和自動生成

通過類型轉(zhuǎn)換代替讀取器和修改器的功能

<?php
namespace app\index\model;
use think\Model;
class User extends Model{
    protected $dateFormat = 'Y/m/d';
    protected $type       = [
        // 設(shè)置birthday為時間戳類型(整型)
        'birthday' => 'timestamp',
    ];
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腻暮,一起剝皮案震驚了整個濱河市彤守,隨后出現(xiàn)的幾起案子毯侦,更是在濱河造成了極大的恐慌,老刑警劉巖具垫,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侈离,死亡現(xiàn)場離奇詭異,居然都是意外死亡筝蚕,警方通過查閱死者的電腦和手機卦碾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來起宽,“玉大人洲胖,你說我怎么就攤上這事∨骰Γ” “怎么了绿映?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長腐晾。 經(jīng)常有香客問我叉弦,道長,這世上最難降的妖魔是什么藻糖? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任淹冰,我火速辦了婚禮,結(jié)果婚禮上颖御,老公的妹妹穿的比我還像新娘榄棵。我一直安慰自己凝颇,他們只是感情好潘拱,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拧略,像睡著了一般芦岂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上垫蛆,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天禽最,我揣著相機與錄音,去河邊找鬼袱饭。 笑死川无,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的虑乖。 我是一名探鬼主播懦趋,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疹味!你這毒婦竟也來了仅叫?” 一聲冷哼從身側(cè)響起帜篇,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诫咱,沒想到半個月后笙隙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡坎缭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年竟痰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幻锁。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡凯亮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哄尔,到底是詐尸還是另有隱情假消,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布岭接,位于F島的核電站富拗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鸣戴。R本人自食惡果不足惜啃沪,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窄锅。 院中可真熱鬧创千,春花似錦、人聲如沸入偷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疏之。三九已至殿雪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锋爪,已是汗流浹背丙曙。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留其骄,地道東北人亏镰。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像拯爽,于是被迫代替她去往敵國和親索抓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容