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

如何在eloquent中根据依恋的存在对模型进行排序?我需要首先显示带有现有附件的模型

在Eloquent中,可以使用orderBy方法对模型进行排序。要根据依恋的存在对模型进行排序,可以使用orderByDesc方法结合exists方法来实现。

首先,假设我们有一个模型叫做Attachment,它与其他模型存在依恋关系。我们想要根据依恋的存在对Attachment模型进行排序。

以下是实现的步骤:

  1. 导入Illuminate\Database\Eloquent\Builder类:
代码语言:txt
复制
use Illuminate\Database\Eloquent\Builder;
  1. 在查询中使用orderByDesc方法和exists方法来对模型进行排序。假设我们要查询的模型是Model,依恋关系字段是attachment_id,可以这样写:
代码语言:txt
复制
$models = Model::query()
    ->orderByDesc(function (Builder $query) {
        $query->select('attachment_id')
            ->from('attachments')
            ->whereColumn('attachments.id', 'models.attachment_id');
    })
    ->get();

在上述代码中,我们使用了子查询来获取attachment_id字段,并根据该字段进行降序排序。exists方法会根据子查询的结果来进行排序。

  1. 如果你想要首先显示带有现有附件的模型,可以使用whereExists方法来过滤掉没有附件的模型。假设我们要查询的模型是Model,依恋关系字段是attachment_id,可以这样写:
代码语言:txt
复制
$models = Model::query()
    ->whereExists(function (Builder $query) {
        $query->select('attachment_id')
            ->from('attachments')
            ->whereColumn('attachments.id', 'models.attachment_id');
    })
    ->orderByDesc(function (Builder $query) {
        $query->select('attachment_id')
            ->from('attachments')
            ->whereColumn('attachments.id', 'models.attachment_id');
    })
    ->get();

在上述代码中,我们使用了whereExists方法来过滤掉没有附件的模型,然后再根据依恋的存在进行排序。

以上就是在Eloquent中根据依恋的存在对模型进行排序的方法。希望对你有帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP-web框架Laravel-Eloquent ORM(三)

四、查询构建器Laravel框架Eloquent ORM提供了方便查询构建器,用于构建复杂查询语句。下面是一些常用查询构建器方法。...orderBy方法orderBy方法用于添加排序条件,例如:$users = User::orderBy('created_at', 'desc')->get();上述代码,查询了按照创建时间倒序排列所有用户...在使用Eloquent ORM进行开发时,需要注意以下几点:模型类名默认对应表名是模型类名复数形式,User模型对应表名是users,如果需要指定表名可以通过定义$table属性来实现。...关联关系定义需要在对模型定义,例如一对一关联需要在hasOne和belongsTo方法定义,一对多关联需要在hasMany和belongsTo方法定义,多对多关联需要在belongsToMany...查询构建器提供了丰富方法来构建复杂查询语句,可以根据具体需求进行使用。

1.5K41

在 Laravel Eloquent 模型类中使用作用域进行查询

问题引出 在通过 Eloquent 模型实现增删改查这篇教程,我们已经学习了如何在 Eloquent 模型类中进行各种查询,但是这些查询大多需要手动调用查询构建器提供各种方法来实现。...如果有一些查询需要在多个地方调用,那么在每个地方都要编写同样代码,有没有什么办法对这种场景下查询代码进行优化呢? Eloquent 模型类提供「Scope」功能就可以帮我们实现这种优化。...接下来,我们就来演示如何在 Eloquent 模型类上使用「作用域」进行查询。...所谓「局部作用域」,指的是预置过滤器在对模型指定查询中生效,与「全局作用域」不同,「局部作用域」需要额外指定才能生效,但是相应,也更加灵活,可以适用于不同场景。...该方法需要以 scope 开头,然后附加该过滤器名称,以文章列表页显示最流行文章为例(按照浏览数逆序),可以在 Post 模型编写一个 scopePopular 方法: public function

2.5K20
  • 20 个 Laravel Eloquent 必备实用技巧

    Eloquent ORM 看起来是一个简单机制,但是在底层,有很多半隐藏函数和鲜为人知方式来实现更多功能。在这篇文章将演示几个小技巧。 1....模型 boot() 方法 在一个 Eloquent 模型,有个神奇地方,叫 boot(),在那里,你可以覆盖默认行为: class User extends Model { public...模型特性:时间、追加等 Eloquent模型有些参数,使用类属性形式。...发现是没有效果: $clients = Client::orderBy('full_name')->get(); //没有效果 解决办法很简单.我们需要在获取结果后对结果进行排序....原生查询方法 有时候,我们需要Eloquent 语句中添加原生查询。 幸运是,确实有这样方法。

    1.1K40

    基于 Laravel 用户动态模块开发

    然后我们在 blade 或者其它模板引擎使用,就可以 switch ... case 写法,来应用不同模板渲染这些样式,比如 blade 用法: @switch($activity->properties...展示动态 展示动态就是根据条件从数据库列出,这里使用包提供模型类:Spatie\Activitylog\Models\Activity use Spatie\Activitylog\Models\Activity...模型事件来监听模型变化,当各种模型事件创建时候我们调用对应方法来记录动态,所以实现起来非常方便。...id 与类型,我们还需要查询一次文章表,才能得到标题用于显示,这样一个动态列表的话,可能会几十条 SQL 了,的确是这样解决方案是这样: 其实我们用户动态是不要求 100% 精准,所以,...其实就是,我们在动态列表需要展示关键信息,比如标题这些一起用 withProperties 起来,这样就一条 SQL 解决了动态列表问题。

    1.5K30

    3分钟短文:Laravel slug,让你url地址更“好记”

    而友好url地址更是能让人一目了然,增加用户好感。同时对于爬虫也是好示例,搜索引擎可以友好地展开工作了。 [img] 本文就来讲讲,如何在laravel构造友好url路由。 啥是slug?...使用 composer 安装: composer require cviebrock/eloquent-sluggable:^4.3 模型引入 Slug 功能 引入 eloquent-sluggable...如果你有印象的话,应该会记得laravel模型find等方法,是基于primary key进行索引,以便加快查询速度。拿到模型ID,查询该条目数据,然后返回模型实例。...findBySlugOrFail('laravel-hacking-and-coffee'); 归根结底,就是使用slug字段记录查询字符串,而slug字段在对应关系定义为 source => ‘name...写在最后 本文介绍了在模型文件内,引入slug功能,并通过修改模型查询方式,让模型默认查询方式修改为通过字符串进行查询,从而可以在路由文件内构造更友好查询url。

    3.5K11

    Laravel Eloquent 模型关联关系详解(上)

    到目前为止,我们介绍所有 Eloquent 模型操作都是针对单表,接下来我们将花三篇左右篇幅来给大家介绍如何在 Eloquent 模型建立模型之间各种关联关系,以及如何实现关联查询和更新。...比如在大型系统,我们用户表通常用于最基本信息存储,邮箱、用户名、密码等,然后像用户爱好、标签、个性签名、所在地等信息都存到另一张扩展表需要时候才会去扩展表取数据,从而提高查询性能。...建立相对关联关系 与一对一一样,我们可以在文章模型建立与用户模型之间相对关联关系,而且这种使用场景很普遍,比如在文章详细页或列表页显示文章作者信息。...在建表时候遵循了这个约定,所以不需要额外指定。...同样,在建表时候也遵循了这一约定,不需要额外指定。

    9.9K40

    【译】20个 Laravel Eloquent 小技巧(上)

    Eloquent ORM 在其表面简单易用机制背后,还有很多半隐藏功能或者少有人知方法来实现一些很有用需求。 在本文中,将向您展示一些技巧。 1....比如说你需要定义一个特定类型用户关联关系并且用邮箱信息来排序,那你可以这么做: public function approvedUsers() { return $this->hasMany...模型属性: 时间戳, 附加属性(appends) 等 Eloquent模型有一些“参数”,会以该类属性形式出现。...使用关系模型字段排序 一个更复杂“技巧”。 如果你有帖子,但要通过最新帖子对它们进行排序? 顶部有最新更新主题论坛中非常常见要求,对吧?...(); } 在这个例子,在这个帖子下没有关联作者时候,author()关联关系将返回一个空App\Author 模型

    2.2K50

    Laravel学习记录--Model

    Eloquent提供了一些方法和这张表进行交互,Stus关联了Mclass对象,在获取这些关联对象后,可以通过模型pivot属性访问中间表数据 public function show(){...,你可能希望根据存在关联对结果进行限制,,获取有电话号码用户,为了实现这个功能 可以通过has()方法,将建立关系方法名传递给has即可 public function show(){...当获取模型记录时,你可能需要根据不存在关联对结果进行限制,获取没有电话号码用户记录,为了实现这个功能你可以使用doesntHave,并传递关联方法 public function show...,并且电话id = 1; } 关联数据计数 如果你只想统计结果数并不需要加载数据,那么可以使用withCount方法,此方法会在你结果集模型添加一个{关联名_count}字段 查询每个用户号码数量...Eloquent提供了便捷方法将新模型增加至关联,如你需要为一个Muser模型插入一个新Phone,这时你无须为Phone手动设置musers属性,直接在关联上使用save方法插入Phone即可

    13.6K20

    【Laravel系列4.3】模型Eloquent ORM使用(一)

    接下来我们就来使用它进行增删改查操作。 增删改查 首先,我们先来看一个新增例子。...小伙伴们不要惊讶,在这里出错是正常,为什么呢?一是在上面的 Modal 类,我们没有指定表名,但是框架会根据类名映射一个表名出来。...在这个类,你会发现有不少魔术方法使用,比如 __get() 这个方法。...这里也不多做讲解了,反正如果是在对象调用时候,调用是没有明确在类模板写下属性,就会来到这个 __get() 魔术方法。...下篇文章我们还将继续进行模型学习以及整个模型源码分析。 参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406

    8.9K20

    流行度偏差影响因素及去偏方法

    导读 本文主要针对流行度偏差问题而提出相关方法,大多数现有工作将这个问题置于静态设置,仅针对带有记录数据单轮推荐分析偏差。...这些工作没有考虑到现实世界推荐过程动态特性,留下了几个重要研究问题没有得到解答: 流行度偏差如何在动态场景中演变? 动态推荐过程独特因素对偏差有何影响? 如何在这个长期动态过程中去偏?...受欢迎和不受欢迎商品是否会获得相似的真阳性率?在第t轮迭代后动态推荐过程,为了量化流行度偏差,需要首先计算每个商品真阳性率。...分析 3.1 流行度变差演变 探究随着轮次不断增加,流行度偏差将如何演变,分别采用MF,随机推荐,按照流行度进行排序,累积点击次数和Gini系数结果如下图所示,MF 效用明显高于流行和随机方法...此外,根据流行度排序方法累积点击次数先增加后收敛,经过一些迭代后,随机方法甚至可以优于流行度方法,这说明了流行度偏差危害。

    1.4K20

    Facebook:既能对话又能行动冒险游戏研究平台LIGHT | EMNLP 2019

    数据质量是通过对标注人员进行测试来维持,详情可以参考原文附件D。总的来说,收集到元素总体统计数据Table1所示: ?...对这些地理位置,标注人员需要对其进行分类,还需要编写描述、背景故事、相连位置名称、包含物体和角色。以Table 2为例: ?...需要注意是:表情会对角色行为产生影响,但对游戏状态没有任何影响。更多详情参考原始论文中附件E。...3.2语境影响: 此外本文还探索了语境在对话、行为、表情预测上影响(使用模型是BERT-baseBi-Ranker)。对话输入和角色对行为预测有重大影响(这很直观),Table 8 所示。...在这里例子,对话输入都是关于事物,模型能够根据对应设置检索出合适回复。 ?

    69740

    Laravel6.0.4将添加计划任务事件方法步骤

    让我们来看看这个版本一些亮点新特性: 首先,在 TestResponse 类添加了一个 assertJsonPath() 断言,对于在 JSON 响应中使用针对嵌套属性点符号断言值,这个断言非常方便..., 'This is my comment', ]); 接着,不论生成器类是否有全局/本地宏,为了便于断言,向 Eloquent 生成器添加三个新访问方法: $builder- hasMacro...ScheduledTaskStarting 计划任务运行时发出信号事件 (#29888) 允许添加带有 InputArgument InputOption 对象命令参数和选项 (#29987) 修复...修复了 __() 和 null 参数 (#29967) 修复了在自定义数据透视模型上修改 updated_at 列问题 (#29970) 修复了 Illuminate\Redis\Limiters\...(dd1e0a6) 改进了从根目录生成类时按字母顺序对导入进行排序 (#29951) 重构 在根目录中将导入更改为 Alpha 排序 (#29954, #29958) 尽可能使用辅助函数 (#29959

    1.7K21

    通过 Laravel Eloquent 模型实现简单增删改查操作

    一个 Eloquent 模型类映射一张数据表,通过模型类提供方法,你可以获取其映射数据表所有记录,也可以获取单条记录,还可以创建、更新和删除对应数据表记录,而这一切都不需要你编写任何 SQL 语句...当然,如果你不想遵循这个系统约定规则,也可以通过手动设置模型类属性方式进行自定义,例如: protected $table = 'articles'; 主键 Eloquent 默认假设每张数据表都有一个整型自增主键...因为是查询构建器,所以我们还可以在模型查询操作对查询结果进行排序和分页: $posts = Post::where('views', '>', 0)->orderBy('id', 'desc')->offset...执行上面的代码就会在数据库新增一条记录(我们在 Tinker 执行上述代码): ? 我们先要创建一个新 Post 模型实例,然后依次设置需要设置字段,最后调用 save 方法保存即可。...同样,Eloquent 也为我们提供了快捷更新方法 updateOrCreate,该方法首先根据传入参数对模型对应记录进行更新,如果发现对应记录不存在,则会将更新数据作为初始数据插入数据库,并保存(

    8K20

    Nat. Comm. | 超算+AI: 为天然产物生物合成路线规划提供导航

    同时单步反应预测误差在多步反应路径预测中会不断积累,因此对于天然产物生物合成路径预测来说,不仅需要提高单步反应预测精度,同时还需要配合高效搜索算法对每一步候选反应进行高效且准确筛选。...给定目标天然产物,BioNavi-NP可在几分钟内给出其到指定分子砌块(building block)多条路径,并根据已知反应或酶对路径进行打分排序。...3分钟左右时间进行预测(见原始论文正文及其附件)。...在对戊二酸(glutarate)生物合成途径预测结果,BioNavi-NP不仅顺利预测出了已知两条路径(分别排序第三和第七),并且结果中排序第四路径与不久前Wang等人(ACS Synth....在已知天然产物生物合成途径理论预测工具,这是第一个无需模板逆生物合成全路径预测模型。实验评估表明,BioNavi-NP模型在内部测试集及多个外部独立公共测试集上都显示出了优异性能。

    97920

    2018年高教社杯全国大学生数学建模竞赛B题解题思路

    ,并将具体结果分别填入附件2EXCEL表。...在第二问需要处理是CNC加工工序分类和分布情况,通过蒙特卡洛模拟算法,在大量运算下可确定相对用时时间最短排序方法。第三问即在模拟过程每个CNC加入故障模拟,即出现故障时使参数均为0....,不过根据物料数量和类型等因素影响,RGV在轨道行驶路线,行驶作用机理进行调度,一般问题就是题目中给出三种情况,这三种情况是最基本,就是都需要考虑到,至于其他可以自己添加(这种添加会作为创新点...对于单个RGV工作重心就变成了对任务点如何进行有效反馈问题,首先我们可以将每一个物料点需求当作一个目标点,而将RGV运行当作一个邮递员,这个邮递员需要跑遍所有的需求点,并且要走一条最短路径,因此我们可以选用最短路径算法和排队论思想进行调度...RGVs系统实时模型在对RGV采用最短路径调度策略后能够提高RGVs系统存储效率,对于任务2就是直接讲数据带入模型进行计算即可。

    2.8K40

    Laravel学习笔记(四)——模型,更安全数据存取

    所以就有了MVC模式,根据程序需求自行封装数据库操作类,需要进行数据库操作时,引入类文件,new一个数据库对象即可。如果数据库信息更改,也只需要更改数据库操作类,提升了代码复用,也便于后期维护。...而在Laravel模型就相当于一个功能完善数据库Helper类,不需要用户自己写,只要掌握基本用法就能很快速方便对数据库进行操作,哪怕你一点不懂SQL语句。...看了接下来Laravel模型使用之后你就会爱上LaravelEloquent ORM模型,这也是直接介绍模型而不讲解其他数据库操作原因。...你可以通过模型查询数据表数据,并将新记录添加到数据表。 定义(绑定)模型 模型创建 首先,用 php artisan make:model 命令创建模型文件(默认存放于/app目录下)。...,你不需要考虑数据库连接与断开,也不需要知道SQL语句,你只需要按照Eloquent ORM提供方法进行对应操作即可。

    1.7K00
    领券