TP5中CURD那点事儿(六)

多对多模型  
背景:快递配送区域shipping_area  地区region  + 一张关系表,
    一个配送区域对应多个城市地区,
    比如:一线城市这个配送区域 ——> 北上广深 ; 还有东三省、珠三角、江浙沪、偏远地区等...

    一个地区也有可能对应多个配送区域,
    比如:北京 ——> (首都、一线城市)

    region.php 区域模型中
        return $this -> belongsToMany('ShipingArea','tp_area_region','id1','id2');
    ShipingArea.php 配送区域模型中建立同样方法
    注意:两个关联id的顺序为关联表中的顺序

新增/更新
    1、向一个表插数据,会触发关联表同时完成
        $region = Region::getByName('北京市');
        $region -> ShipingArea() ->save(['shiping_area_name' => '中国首都']);
    如上:
        shipping_area表中增加一条记录中国首都,此时关系表中增加一条关联记录

    2、给当前用户加多个角色
        $user = User::getById(30);
        $user -> role() -> saveAll([
                    ['role_name' => '角色1'],
                    ['role_name' => '角色2'],
                    ['role_name' => '角色3'],
                ]);

    3、给一个地区添加一个现有的配送区域,实则在关联表添加一条关联记录
        $region = Region::get(355);//现有地区
        $ShipingArea = ShipingArea::getByShipingAreaName('珠三角'); //现有配送区域
        调用attach()
        $region -> shipingArea()->attach($ShipingArea);//这里可以直接传珠三角的id

删除关联
    $region = Region::getByName('北京市'); //返回北京
    $ShipingArea = ShipingArea::get(2); //返回首都
    $region -> shipingArea()->detach($ShipingArea);// 只删除关系表关联记录
    $region -> shipingArea()->detach($ShipingArea,true);// 删除关联记录同时删除shipingArea中对应的记录(首都)

查询
    $region::get(2014,'shipingArea'); //这里传的方法名,查询的是多表

    $region::get(2014); //不传第二参数可执行以下操作
    $region ->shipingArea[0]-> 字段名


Model层中读取器
    protected function getUserStatusAttr($value,$data)
    {
        $status = [ -1 => '删除', 0 => '禁用' , 1 => '正常', 2 => '待审核'];
        return $status[$data['status']];
    }

模型输出数据库中没有的字段
Controller层

    使用toArray方法将当前的模型实例输出为数组
    数组输出的字段值会经过获取器的处理,也可以支持追加其它获取器定义(不在数据表字段列表中)的字段
    $user -> append(['user_status']) ->toArray();

    $user = User::find(1);
    $user ->toArray();//将当前的模型实例输出为数组
    $user ->hidden(['reg_time','last_time'])->toArray(); //设置不输出的字段属性
    $user ->visible(['user_id','nickname','email'])->toArray() //设置允许输出的属性
    调用模型的toJson方法进行JSON序列化
    $user ->toJson();
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容