首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel多关系详解【文章 - 标签】

前言 今天弄了一天的关于文章的功能,其中主要卡在文章与标签的的关系纠结。卡了半天,终于算是解决了,不是很完美,但可以。 新建迁移文件 的关系,需要三张表。...这是我是文章表【articles】、标签表【tags】以及关系表【article_tag】 其中关系的命名是[article_tag]而不是tag_article 因为laravel默认是以字母升序排列...可以定义的时候设置,但何必那么麻烦,按照默认规则来不是很好么? 另外就是,新建迁移文件的顺序也有要求,关系表肯定是最后的,然后文章表和标签表好像随意,但我是先建文章表。...article_id一样的记录也删除 执行迁移 php artisan migrate 声明Eloquent的关系 Article ?...我们使用 $this->belongsToMany() 来表明Eloquent的关系,这里需要注意的是如果你的外键并不是 article_id 和 tag_id ,你需要在第三个参数进行设置,写成类似下面这样

1.8K00
您找到你想要的搜索结果了吗?
是的
没有找到

数据库一、一怎么设计表关系

1、一一可以两个实体设计一个数据库l例如设计一个夫妻表,里面放丈夫和妻子 2、一可以建两张表,将一这一方的主键作为那一方的外键,例如一个学生表可以加一个字段指向班级(班级与学生一的关系...) 3、可以多加一张中间表,将另外两个表的主键放到这个表(如教师和学生就是的关系) ---- 关于外键的设置: 首先,外键引用的那个列主表必须是主键列或者唯一列。...所以1:n的肯定把外键建立n的那张表上。 1:1,一般要看谁是主表,谁是附属表,外键当然建立附属表。...1:n,1:m ---- 关于主外键及多表联系的进一步理解: 主外键的存在是依托两个实体之间的关系而存在的; 比如班级与学生的关系: 一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一的关系...,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如: --班级表为空的情况往学生表插入一条记录是不允许的: insert into students

4.6K20

还得再来聊聊Laravel模型的一些事

前言 之前,文章:https://www.misiyu.cn/article/58.html 已经发过关于Laravel多关系了。 但回过头来,过了个把月再去看,我自己都忘了怎么写了。...确实看laravel的中文文档,看得糊里糊涂的。还是得在实践理解啊。 情景假设 我有一张来源表(referers)来记录href和网页标题title。...还有一张信息表(netDisks)来记录一些东西。 目前需求是信息表里面的多个信息可能同属于来源表的一条记录。 同样,来源表的多条信息可能属于信心表的一条记录。...简言之就是,这是的关系。 细节 新建迁移文件就不说了。 我想说的重点是: 1、来源表和信息表可以没有任何外键约束,意思就是说各建各的,不用考虑外键什么的。...2、第三张表的命名有要求,主要是Laravel默认情况的关系。

1.6K00

DRFManytoMany字段的更新和添加

背景:drf的序列化器给模型输出带来了便利但是对于多字段网上查询的内容却是很少(也有可能是本人不会搜答案)经过我多个日夜的摸索,终于实现了我的需求,现将自己的心得记录一下说下我的需求:定义一个订单模型里面的订单...orderId 是自动生成的UUID订单的区域是外键,下单人也是外键,菜品orderMenu是一个多字段(其实通过我查到的方法说的都是外键字段就可以实现但是个人觉得菜品和订单应该是多会比较好理解...request.data['orderBusinessArea'] = request.data.get('orderBusinessArea_id') # 获取传入过来的信息格式为...('orderMenu') for i in orderMenu: # 我的思路是既然不能在更新主表的时候更新多字段那就单独把多字段提出来更新 # 传入多字段的时候同步传入需要更新的中间表...写的时候又发现了代码的几个bug1、可以更新不是订单人的菜品2、更新的时候只能更新已经生成的菜品内容,因为无法为订单添加新的菜品,这个涉及到中间表的对应关系已经确定了。

67920

mybatis-plus 自定义SQL、一分页查询过滤租户

前言         这几天使用的mybatis-plus的时候,遇见复杂业务的时候遇见的一些租户过滤问题,面对多表关联查询的时候、自定义sql的时候,或者说一的时候,其中一个查询等功能过滤过滤租户的解决方案...一个缓存命中率不高的场景分页很多时候不能依赖主数据分页查询再遍历查询的方式来组装数据的时候,就会遇见自定义sql 或者是一查询。这个时候如果用mybatis-plus的租户就会很有问题。...list.add("a_region_city"); return list.contains(tableName); } }; } } ignoreTable 就是根据表名进行过滤租户...,页数对不上,原因是分页查询有:select count(*) from user 的语句,这个是分页工具的能力,如何解决呢?...最后说说一sql实现 VO代码: /** * @Description: 说明 * @author: kinbug * @date: 2021年07月22日 */ @Data public

3.4K50

Jpa 怎么玩一

Jpa 的一一、一没搞明白的话,总会觉得有点绕,今天咱们来简单聊聊这个话题。 1. 一一 比如说一个学校有一个地址,一个地址只有一个学校。...,可以只 School 维护,也可以只 Address 维护,也可以两者都维护,具体哪种,那就看需求了。...在上面的例子,我们 School 和 Address 中都通过 @OneToOne 注解来维护了一一的关系。...这样,最终创建出来的 t_school 表和 t_address 表,会分别多出来一个字段 address_aid 和 school_sid,这两个字段都是外键,正是通过外键,将两张表不同的记录关联起来... School 类做相似的操作。 最后启动项目去观察 MySQL 中生成的表。 2.

70220

超越stacking, 使用optuna模型进行加权融合

模型加权融合是一个常见的提升机器学习效果的方案。 但是各个模型的权重如何确定呢?...有些方案是使用线性回归或者逻辑回归模型进行学习,这种方案一般叫做stacking ensemble,但是这种方案一般是可微的Loss进行优化的,无法直接auc,acc等不可微的评价指标进行优化。...由于optuna是一个强大的不可微问题调优工具,我们可以使用它来寻找模型融合的权重,直接auc,acc等不可微的评价指标进行优化,当给予足够的搜索次数时,其结果相比stacking ensemble通常更加有竞争力...AUC提升了0.67个百分点,达到了0.9305 # 五,获取CV预测结果 # 为了充分利用训练数据集,采用类似stacking的方式,用5折CV的方式获取各个模型训练集的预测结果 def get_cv_preds...optuna_ensemble_score:', test_score(best_params)) optuna_ensemble_score: 0.9320248463114754 nice,optuna模型融合方案测试集

98741

windows环境下使用virtualenvpython进行版本隔离

值得注意的是,我们说virutalenv的安装是为了解决版本python共存的问题,暗含了,你的至少有一个python版本是已经存在,并且可以正常工作的。 我这里的主环境是python2.7 ?...首先:准备哪个目录进行虚拟,就先进入到这个目录下(这里是c:\PythonProj\sjtu-cs ),然后运行命令: virtualenv -p c:\Python36\python.exe HigEnv...说明: -p就是python的版本(需要带上路径,这是因为我们的环境变量里只有python2.7) HigEnv就是虚拟的环境变量。 如果不知道virtual,可以执行下面的命令进行查看: ? ?...值得注意的是,退出终端,重新进来的时候,如果没有激活,我们配置的虚拟环境是不会生效的,linux就不一样了,一直生效,不用每次都激活,目前还在研究。 ? 4....pycharm创建virtualenv的虚拟环境: ? ? ?

1.8K30

快速学习-JPA的一

第3章 JPA的一 3.1 示例分析 我们采用的示例为客户和联系人。 客户:指的是一家公司,我们记为A。 联系人:指的是A公司的员工。 不考虑兼职的情况下,公司和员工的关系即为一。...3.2 表关系建立 多关系,我们习惯把一的一方称之为主表,把的一方称之为从表。在数据库建立一的关系,需要使用数据库的外键约束。 什么是外键?...3.3 实体类关系建立以及映射配置 实体类,由于客户是少的一方,它应该包含多个联系人,所以实体类要体现出客户中有多个联系人的信息,代码如下: /** * 客户的实体类 * 明确使用的注解都是JPA...3、如果还想删除,使用级联删除引用 没有从表数据引用:随便删 实际开发,级联删除请慎用!...(的情况下) 3.5.3级联操作 级联操作:指操作一个对象同时操作它的关联对象 使用方法:只需要在操作主体的注解上配置cascade /** * cascade:配置级联操作 *

1.9K20

windows环境下使用virtualenvpython进行版本隔离

值得注意的是,我们说virutalenv的安装是为了解决版本python共存的问题,暗含了,你的至少有一个python版本是已经存在,并且可以正常工作的。...首先:准备哪个目录进行虚拟,就先进入到这个目录下(这里是c:\PythonProj\sjtu-cs ),然后运行命令: virtualenv -p c:\Python36\python.exe HigEnv...如果不知道virtual,可以执行下面的命令进行查看: 上面都解释的很清楚,这里不再赘述。 我们看一下现在我们配置的是否生效了: 显然没有生效,因为需要激活。 3....\HigEnv\Scripts>deactivate 值得注意的是,退出终端,重新进来的时候,如果没有激活,我们配置的虚拟环境是不会生效的,linux就不一样了,一直生效,不用每次都激活,目前还在研究。...pycharm创建virtualenv的虚拟环境: 当然了,你也可以不用创建环境变量,直接选择你需要的就可以了: 打开你需要选择python版本的项目,然后直接选择需要的project interpreter

1.3K50

Python 服装图像进行分类

本文中,我们将讨论如何使用 Python 服装图像进行分类。我们将使用Fashion-MNIST数据集,该数据集是60种不同服装的000,10张灰度图像的集合。...我们将构建一个简单的神经网络模型来这些图像进行分类。 导入模块 第一步是导入必要的模块。...我们需要先图像进行预处理,然后才能训练模型。...这些层是完全连接的层,这意味着一层的每个神经元都连接到下一层的每个神经元。最后一层是softmax层。该层输出 10 个可能类的概率分布。 训练模型 现在模型已经构建完毕,我们可以对其进行训练。...经过 10 个时期,该模型已经学会了服装图像进行分类,准确率约为 92%。 评估模型 现在模型已经训练完毕,我们可以测试数据上进行评估。

42151

使用iptables租户环境的TCP限速

为了方便用户,开发的时候不必自己的开发环境跑一个 SideCar,我用 socat 一台开发环境的机器上 map UDS 到一个端口。...方法是 Per-IP rate limiting with iptables[1] 学习到的,这个公司是提供一个租户的 SaaS 服务,也有类似的问题:有一些非正常用户 abuse 他们的服务,由于...因为这个应用内部就可以控制了,但是我这里是想所有的 packet 进行限速,所以就不需要用到这个 module) 完整的命令如下: $ iptables --new-chain SOCAT-RATE-LIMIT...iptables Chain,做 rate limit; 第二行处理如果在 rate limit 限额内,就接受包;否则跳到第三行,直接将包 DROP; 最后将新的 Chain 加入到 INPUT ,...对此端口的流量进行限制。

78620
领券