20、ThinkPhP5 :关联-二(一对多)

1、一对多关联查询

        $user = Users::get(1);
        $comm = $user->comm; //查询这个人user_id 为1 的这个所有的评论。
        dump($comm);
        //SELECT * FROM `tp_comment` WHERE `uid` = 1
        //也可以先查询后使用
        $user = Users::get(1,'comm');

2、一对多​​​​​​​关联过滤查询

        $user = Users::get(1);
        $comment = $user->comm()->where('is_show',1)->select();
        //SELECT * FROM `tp_comment` WHERE `uid` = 1 AND `is_show` = 1 
        dump($comment);

3、一对多​​​​​​​关联过滤查询 使用getBy

        //关联过滤查询 使用getBy
        $user = Users::get(1);
        $comm = $user->comm()->getByContent('这个东西我不会再买了。');
        //SELECT * FROM `tp_comment` WHERE `uid` = 1 AND `content` = '这个东西我不会再买了。' LIMIT 1
        dump($comm);

4、一对多​​​​​​​查询有评论过的用户列表

        //查询有评论过的用户列表
        $user = Users::has('comm')->select();
        //SELECT `Users`.* FROM `tp_users` `Users` INNER JOIN `tp_comment` `Comment` ON `Users`.`user_id`=`Comment`.`uid` GROUP BY `Comment`.`uid` HAVING count(*)>=1
        //return json($user);
        //查询评论过2次以上的用户   带条件
        $user = Users::has('comm','>=',2)->select();
        //SELECT `Users`.* FROM `tp_users` `Users` INNER JOIN `tp_comment` `Comment` ON `Users`.`user_id`=`Comment`.`uid` GROUP BY `Comment`.`uid` HAVING count(*)>=2 
        //return json($user);
        //查询评论内容包含有 ThinkPHP5快速入门的用户
        $user = Users::hasWhere('comm',['content'=>'ThinkPHP5视频教程'])->select();
        //SELECT `Users`.* FROM `tp_users` `Users` INNER JOIN `tp_comment` `Comment` ON `Users`.`user_id`=`Comment`.`uid` WHERE `Comment`.`content` = 'ThinkPHP5视频教程' GROUP BY `Users`.`user_id`
        

5、 一对多​​​​​​​关联更新

        //关联更新
        $user = Users::get(1);
        $comm = $user->comm()->getByContent('这个东西我不会再买了。');
        $comm->content = 'ThinkPHP5快速入门';
        $comm->save();
        //SELECT * FROM `tp_comment` WHERE `uid` = 1 AND `content` = '这个东西我不会再买了。' LIMIT 1

6、一对多​​​​​​​查询构建器的update方法进行更新

        //查询构建器的update方法进行更新
        $user = Users::get(1);
        $user->comm()->where('content','ThinkPHP5快速入门')->update(['content'=>'我不会!']);
        //UPDATE `tp_comment` SET `content`='我不会!' WHERE `uid` = 1 AND `content` = 'ThinkPHP5快速入门'

7、一对多​​​​​​​删除部分关联数据

        //删除部分关联数据
        $user = Users::get(1);
        //删除部分关联数据
        $comm = $user->comm()->getByContent('ThinkPHP5视频教程');
        //SELECT * FROM `tp_comment` WHERE `uid` = 1 AND `content` = 'ThinkPHP5视频教程' LIMIT 1 
        $comm->delete();
        //DELETE FROM `tp_comment` WHERE `comment_id` = 5

8、一对多删除所有的关联数据

        //删除所有的关联数据
        $user = Users::get(1);
        //SELECT * FROM `tp_users` WHERE `user_id` = 1 LIMIT 1
        $user->comm()->delete();
        //DELETE FROM `tp_comment` WHERE `uid` = 1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值