首页 > 编程语言 >thinkphp 关联模型 一对多关联 主副表查询

thinkphp 关联模型 一对多关联 主副表查询

时间:2024-01-23 22:56:07浏览次数:31  
标签:profile Users 模型 关联 主副表 thinkphp 主表 id

一对多关联查询

namespace app\model;

use think\Model;

class Users extends Model
{
    // 模型中定义一对多关系的方法 用于建立当前模型与另一个模型之间的关系, 例如: 当前数据表对应的外键表
    // profile 自定义方法名  Profile::class 关联数据表的模型文件类名
    public function profile()
    {
        // hasMany模式 一对多关系查询 在主表里面 查询 副表的数据
        // 主表关联副表 hasMany('关联模型名', ['关联外键','主键']) [users_id, id]
        // 关联模型名 必须的: 关联模型名或者类名 Profile::class
        // 外键:默认的外键是当前模型名(不含命名空间)+_id, 例如: 当前模型名是Users, 默认的外键是users_id
        // 主键:主键是当前模型的主键, 默认会自动获取也可以指定传入
        return $this->hasMany(Profile::class, 'users_id', 'id');
    }
}

使用的地方 类里
<?php

namespace app\controller;

use app\BaseController;
use app\model\Profile;
use app\model\Users;


class Login extends  BaseController
{
    public function index()
    {
        //  一对多关系查询
        // 查询副表的数据
        // $user = Users::find(1);
        // return $user->profile;
        // $data = $user->profile->where('id', '>', 2);
        // $data = $user->profile()->where('id', '>', 3)->select();

        // 查询主表的数据
        // has() 查询副表大于2条的主表数据 返回对应的主表数据
        // $data =  Users::has('profile', '>', 2)->select();

        // hasWhere() 查询副表的数据 返回对应的主表数据
        // profile 关联的 副表模型名
        // $data = Users::hasWhere('profile', ['id' => 1])->select();
        // 闭包形式
        // $data = Users::hasWhere('profile', function($query) {
        //     return $query->where('id','>',10);
        // })->select();

        // 新增
        // $data = Users::find(1);
        // $data->Profile()->save(['hobby' => 'thinkphp']);

        // 删除  删除的是主表 id为1的 和 id为1副表关联的数据
        $users = Users::with('profile')->find(1);
        $users->together(['profile'])->delete();

        return $users;
    }
  }

标签:profile,Users,模型,关联,主副表,thinkphp,主表,id
From: https://www.cnblogs.com/anans/p/17983605

相关文章

  • Wish防关联是什么?如何避免Wish违规封店?
    四大跨境电商平台之一Wish,做跨境电商的很多人可能都听过Wish,在Wish平台上开设店铺是许多卖家的选择,但要避免违规封店需要了解Wish的防关联政策。本文将介绍如何避免违规封店,帮助您在Wish平台上稳定经营。一、什么是Wish防关联?Wish防关联是Wish平台为了维护公平竞争和保护消费者权益......
  • 泛微OA触发关联流程提交操作思路
    1.首先数据下数据字典,查询workflow_requestbase表的currentnodeid,currentnodetype.根据判断条件requestid查询即可2.第二部完成数据库端数据的查询更新,及前端页面的效果测试 3.更新好节点ID和节点类型后会发现流程会出现在下一个节点,这个时候编写action即可(可加各种判断条......
  • Shopee买家通系统:购物大军的防关联利器
    我一直是Shopee的忠实用户,但由于平台规定一个买家只能拥有一个买家号,我曾一度为如何有效运用大量虾皮买家号而感到困扰。幸运的是,我发现了一款强大的工具——Shopee买家通系统,这真是购物大军的防关联利器。首先,我试用了市面上的防指纹浏览器,但发现手动操作繁琐,且并不能满足我对自动......
  • 聪明购物秘籍:如何规避Shopee账号关联封号风险
    在Shopee平台上,规定一个买家只能拥有一个买家号,同时在一台电脑或者一个手机上登录多个买家号可能导致关联封号的风险。为了规避这一风险,许多购物达人正在寻找方法来防止账号关联。下面是一些使用大量Shopee买家号的技巧,帮助您巧妙应对这一挑战。1、防指纹技术的应用要使用大量Shope......
  • Nginx配置ThinkPHP3.1的PATHINFO模式
    server{listen8156;#监听端口(根据自己的需求更改)server_namelocalhost;#域名root/www/php;indexindex.htmlindex.htmindex.php;location~.*\.php/?.*${fastcgi_indexindex.php;fastcgi_pass127.0.0.1:9000;includefa......
  • Spark SQL五大关联策略
    1、五种连接策略选择连接策略的核心原则是尽量避免shuffle和sort的操作,因为这些操作性能开销很大,比较吃资源且耗时,所以首选的连接策略是不需要shuffle和sort的hash连接策略。◦BroadcastHashJoin(BHJ):广播散列连接◦ShuffleHashJoin(SHJ):洗牌散列连接◦ShuffleSortMergeJoi......
  • sed的&操作符+复盘和把经验转化为能力+sed替换关联环境变量+SystemC+C++的struct和cla
    sed的&操作符sed一般是按行操作,如果匹配到,那么匹配到的内容被表示为&。以下是在单行操作中,想要实现在某行数据特定字符前后插入字符的方法。复盘和把经验转化为能力https://www.163.com/dy/article/GEI2Q9EN05429MRP.html通过寻找和尝试新的做事方式,你才能提高自己的能力。......
  • IP关联会怎样?如何避免多个账号的IP关联?
    当你需要运行多个账号或者多个窗口任务时,你需要关注的一个问题是多个账号是否会被关联。而引起账号关联的其中一个原因是IP关联。IP关联是什么意思?IP关联即多个账号使用同一个IP地址。比如你有多个亚马逊、Facebook账号,即使换了不同的设备,但是网络环境没有变化,仍使用的同一条IP地址......
  • thinkphp 操作mysql数据库
    获取当前路由信息useapp\BaseController;//引入控制器publicfunctionindex(){//返回当前实际路径return$this->app->getAppPath();//返回当前方法名//return$this->request->action();}载入的控制器不存在......
  • thinkphp5详细使用阿里云短信最新版
    1.我们下载官方完整包,PHP版本 https://help.aliyun.com/document_detail/55359.html?spm=5176.doc55451.6.580.3rgXTq 解压后得到目录2.将目录里的api_sdk复制出来到tp5根目录的extend下面文件夹复制过去后,我们最好更改一下名称,比如我们更改为alisms。 3.使用方法直接......