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

Laravel 软删除存在的问题

被关联表是一个类对象,如果应用了软删除,则会自动附加上软删除条件 6、在hasManyThrough关联关系中,如果关联表,中间表,被关联表都有软删除字段,查询关联关系,会对中间表应用删除条件。...但是,如果要查询包含已删除的关联关系,中间表的删除标记条件不会去除。 hasManyThrough中,中间表是通过中间对象传入,可以获取到中间表是否应用软删除。...但是中间表的软删除不是通过scope实现的,关联关系对象在创建的时候就已经把中间表的软删除条件附加上去了,因此,即使指定了withTrashed,也会有中间表的软删除查询条件。...如果要修改,也可以,通过scope的方式附加软删除条件,这样就能保证软删除的查询条件是在真正查询的时候才附加上去。...从上面可以看出,Laravel的软删除,在关联关系中会造成一些查询上条件的歧义,非常容易产生bug.而且,belongsToMany中间表的问题是无解的。

2.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Laravel源码分析之模型关联

    使用模型关联给应用开发带来的收益我认为有以下几点 主体数据和关联数据之间的关系在代码表现上更明显易懂让人一眼就能明白数据间的关系。...按照Laravel设定好的模式来写关联模型每个人都能写出高效和优雅的代码 (这点我认为适用于所有的Laravel特性)。...在开发中我们经常遇到的关联大致有三种:一对一,一对多和多对多,其中一对一是一种特殊的一对多关联。我们通过官方文档里的例子来看一下Laravel是怎么定义这两种关联的。...、关联模型在中间表中的外键名、父模型的主键、关联模型的主键、关联关系名称。...Model 的 get方法获取模型时会预加载的关联模型,在获取关联模型时给关系应用约束的 addEagerConstraints方法是在具体的关联类中定义的,我们可以看下HasMany类的这个方法。

    9.6K10

    Laravel学习记录--Model

    Model关联 一对一 一对多 渴求式加载 多对多 远层一对多 多态关联 多对多多态关联 一对一 1:1最基本的关联关系 ,如一个User模型关联一个Phone模型,为了定义此关联,我们需在User模型定义一个...使用渴求式加载,即根据预先需求查询出所有数据 为了验证[渴求式加载]的好处,举下列例子 这里用到了Laravel Debugbar 调试 安装方法可参照我的另一个博客 - - - Laravel...()方法建立远程一对多关联 hasManyThrough(related,through,firstKey,secondKey,localKey,secondLocalKey) related:关联模型类...hasManyThrough方法并返回结果 public function articles(){ return $this->hasManyThrough('App\Article'...显然不现实而且还是多对多关系,到时候处理起来也很复杂,或者在中间表里面添加媒体id字段,每个媒体id字段与标签建立连接?

    13.6K20

    基于 Redis 实现 Laravel 广播功能(下):在私有频道和存在频道发布和接收消息

    {id}', function ($user, $id) { // 模拟微信群与用户映射关系列表,正式项目可以读取数据库获取 $group_users = [ [...], ]; // 判断微信群 ID 是否有效以及用户是否在给定群里,并以此作为授权通过条件 $result = collect($group_users)->groupBy...false : true; }); 先模拟一个微信群与用户表的映射关系,然后根据传入的用户 ID 和群 ID 判断群 ID 是否有效,以及用户是否在这个群里作为授权是否通过的依据。...日志确认消息已经转发到 Websocket 客户端: 然后在 /broadcast 视图,就可以在开发者工具 Console 标签中看到输出的问候信息了,这个信息来自私有频道的广播信息: 如果用户未认证...在客户端接收存在频道消息 在 Laravel Echo 客户端,我们可以通过 Echo.join 加入某个私有频道返回 PresenceChannel 实例,然后在其基础上通过 listen 接收 Websocket

    3.2K30

    Spring Data JPA 就是这么简单

    一对多的关系,jpa 使用的注解是 @OneToMany 多对一的关系,jpa 使用的注解是 @ManyToOne 多对多的关系,jpa 使用的注解是 @ManyToMany 在使用 jpa 的时候,...@ManyToMany 在 java 的实体类当中应该如何描述上述关系呢?...,彼此实体类中互相关联彼此,这里有一点需要提出:在一对一的关系维护中通常需要一个第三张表来维护这个关联关系,在 Student 类中定义了一个 @JoinTable 注解 ,该注解是用来生成第三张表的,...在上面讲解的四种类之间的关系的时候,四个关系注解 @OneToMany , @ManyToOne, @OneToOne , @ManyToMany 中都有一个属性叫 cascade 该属性值是一个 CascadeType...orphanRemoval 属性就好,当然在@ManyToMany 这个注解当中是没有 orphanRemoval 这个属性的,还是需要使用自己的级联删除属性的。

    7K50

    Laravel 非常规教程之1 生命周期

    上一节老高零(瞎)散(扯)的讲了一下laravel的基本知识,不知道你现在搞清楚symfony vs laravel的关系了吗?...其实没多大关系,l借用了s的组件,laravel的屏蔽了框架复杂的内部实现,让程序猿们注重业务的开发,而symfony的学习曲线很陡峭,需要你掌握框架的运行机制和各种组件的关系。...本节关注一次请求在Laravel中的生命周期!就是从接收到请求到返回请求整个过程中都发生了哪些比较重要的事件。 入口 让我们先把目光移向程序的入口,index.php的内容如下 <?...Foundation\Http\Kernel 接口 $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); # 处理请求,返回处理响应类,其基类来自...的启动过程中服务容器——laravel真正的核心一节。

    51720

    Laravel 模型操作中一次奇妙踩坑经历

    准备 需求: 获取项目下的所有任务,且需要合并公共任务 逻辑关系: • 一个项目有很多任务• 一个项目有很多项目成员• 一个任务有一个执行人 (当任务类型为:1 的时候为公共事务)• 一个人有多个项目...从上面的需求中大家可能会说,获取项目下的所有任务和公共事务直接通过: $projectTasks = $project->tasks->merge(Task::ofCommonTask()->get())->groupBy...既然 attributes 被修改了,那究竟为啥在输出的时候只有他本身的属性有变更但是关联属性没有呢?...不知道大家有没有理解,有需要改进的地方大家在评论区留言噢。...,所以呀还是得追根溯源,并不是把时间都浪费在尝试上面,多看看源码,会有想不到的收获,哈哈。

    1.6K30

    为什么 Laravel 这么优秀?

    因为我们已经完成了数据表中字段的定义、表与表的关系、以及最重要的一步:如何将数据及数据之间的关系写入数据库中,下面简单的来介绍下在 Laravel 是如何完成的。...,我们就可以非常方便的通过 Laravel Eloquent 查询它们之间的数据关系。...Model 的 Factory 规则,我们就能轻松的在开发阶段模拟出一个关系完整的数据。...会自动同步所有的数据库迁移文件并按照 Laravel Factory 定义的规则生成一个关系完备的测试数据。...Comnication # Laravel 的强大离不开社区的支持,这十年来 Laravel 官方已经发布了 20 多种周边生态,这里摘抄一个来自@白宦成关于 Laravel 和其他框架的对比图。

    26710

    【研发日记13】不使用三方包时,如何在ThinkSNS中建立优雅的用户权限管理

    需求场景 就是用户组+权限节点,这个需求 laravel 有很多很好的第三方包实现。下面描述代码不参与缓存机制纯数据库查询,给大家提供一个思路。...下面的代码都是来自于ThinkSNS+,是基于 Laravel 全新开发的 ThinkSNS 社交开源项目,遵循 Apache-2.0 开源协议。欢迎 Star 哦。...数据表设计如下: 可以看到关系如下 user -> role -> ability ,其中关系全部都是多对多关系。...以上代码是在开发ThinkSNS+中的实际真实代码。具体的实现可参考项目。...以上代码都来自于ThinkSNS Plus,看完整的开发代码可以看仓库: GitHub: https://github.com/slimkit/thinksns-plus(开源不易,求 Star )

    1.2K40

    探索 PythonDjango 支持分布式多租户数据库,如 Postgres+Citus

    将租户列引入属于帐户的模型 1.1 向属于某个帐户的模型引入该列 1.2 在属于一个帐户的每个 ManyToMany 模型上为 account_id 引入一个列 2....1.2 在属于一个帐户的每个 ManyToMany 模型上为 account_id 引入一个列 目标与之前相同。我们希望能够将 ORM 调用和查询路由到一个帐户。...我们还希望能够在 account_id 上分发与帐户相关的多对多关系。...,我们介绍了在 citus 中, ManyToMany 关系需要一个带有租户列的 through 模型。...使用中间件自动化 而不是在每个视图中调用 set_current_tenant(), 您可以在 Django 应用程序中创建并安装一个新的 middleware 类来自动完成。

    2.1K10

    用事件驱动编程解救臃肿的代码

    在这篇文章中我们将了解到什么是“事件驱动编程”以及在Laravel中如何开始构建一个事件驱动应用,同时我们还将看到如何通过事件驱动编程来对应用程序的逻辑进行解耦。...在开始之前,先说明一下这篇文章主要是阐述事件驱动这种编程思维和理念的,所以不会涉及到Laravel Events的方方面面。...何为事件驱动编程 在我们深入事件驱动应用之前,我们先看一下在维基百科里对事件驱动编程的定义: 事件驱动编程是一种编程模式,其中的程序流由诸如用户动作(鼠标点击,按键)、传感器输出或来自其他程序/线程的消息等事件来决定确定...在Laravel中事件是发生在应用程序中的动作,像邮件通知、记录日志、用户注册、CRUD操作等。 LaravelEvents系统提供了简易的观察者模式实现,让开发者能够订阅和监听发生在应用中的动作。...在Laravel中Event类文件被存放在 app/Events目录,Listener类文件被存放在 app/Listeners目录。

    2K30

    orm 系列 之 Eloquent演化历程2

    中一大亮点Artisan,Artisan是 Laravel 自带的命令行接口名称,此处不做具体的介绍了,有机会再细说的,当我们在命令行中执行php artisan command的时候,会去调用migrateCommand...本文最后讲下Eloquent中新增的对象之间的关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系,接下去让我们看下这是怎么实现的?...让我们跟着git继续追踪吧_ 新纪元 为了解决PHP组件管理及散步的问题,2009年的php|tek大会上成立了PHP-FIG组织,目的在于透过三个方式来制定PHP社群在开发组件时的规范,laravel...参考 [ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系

    2.4K30

    推荐超好用的 6 款 Laravel Admin 管理模版

    图片 Laravel Admin 管理后台模板的不同类型 在搜索引擎中粗略搜索,你会得到大概 20多种 Laravel Admin 模板的选项,尽管它们表面上看起来很相似,但实际上在用途和架构存在着很大差异...一些流行的支持该功能的 Laravel 管理模板包括 Nova、Backpack 和 Orchid 等。 但缺点是,如果您业务上有着复杂的模型关系,可能很难让它按照您的要求来工作。...此外,您还可以通过布局和组件来自定义屏幕的查询和权限以及视图层。 虽然这比使用 Nova 需要更多的手动操作,但它非常灵活,易于迭代和定制。...优点 适合编程经验有限的开发者 提供免费视频培训课程,让您快速学习 可以轻松扩展和覆盖默认的控制器 缺点 Laravel 的细粒度配置在视觉构建器中是很难实现的 与 Laravel 作为框架而不是 CMS...InfyOm Laravel Generator 是由印度开发公司 InfyOm 创建的工具,它是为创建 Laravel 管理网站而制作的,可以在几分钟内将您所有的模板代码构建起来。

    7.7K41
    领券