在 laravel 中链接 2 个数据集的最有效方法

Posted

技术标签:

【中文标题】在 laravel 中链接 2 个数据集的最有效方法【英文标题】:most efficient method of chaining 2 data sets in laravel 【发布时间】:2016-12-14 20:26:14 【问题描述】:

现在,如果我问的问题太具体了,比如 Laravel,你可以抨击我,但我想知道,将 2 个数据集与 Laravel 中的工具链接在一起的最有效方法是什么。

在使用 eloquent 关系和使用查询构建器连接之间进行选择时,我应该使用特定的思维方式吗?或者我应该考虑在较小或较大的数据集上使用查询生成器的任何缺点?

我正在构建一个票务系统,它只需要用户表中的一个或两个字段,此时考虑使用关系似乎非常过分,但如果系统需求增加,可能会导致乱码。这是关系要解决的情况吗?

在使用 eloquent 关系时是否发生了我应该注意的任何耦合类型的操作?

如果我真的不清楚我是如何提出这个问题的,我会尝试改写它。

【问题讨论】:

【参考方案1】:

我想您会像我一样发现,在您的 Eloquent 模型中设置几个简单的关系方法可以释放 Eloquent 的强大功能(从而释放其易用性和简单性)。例如,您更愿意编写自定义连接代码还是使用这样的结构:

foreach($user->tickets as $ticket)  ... etc ... 

听起来你对 Laravel 很陌生。我强烈建议阅读Laravel manual 中有关关系的页面。有很多很好的例子。还有一个关于关系here 的 Laracast 视频教程。我与这个网站没有任何隶属关系。

票类:

<?php
class Ticket extends Model 
    public function user() 
        return $this->belongsTo('User');
    

用户类别:

<?php
class User extends Model 
    public function tickets() 
        return $this->hasMany('Ticket');
    

只要您有这样的表格设置:

tickets (table)
- id
- user_id

users (table)
- id

此示例假定模型位于全局命名空间中。然后您可以像这样从工单中获取用户数据:

$ticket->user->first_name
$ticket->user->last_name

【讨论】:

我赶紧补充一下,我已经在很大程度上阅读了有关 eloquent 及其用途的信息。我完全理解你的观点,我想我一直都知道最终会有好处。但肯定也有不利的一面吗?在我的案例中使用的示例是,该系统的需求实际上是我的用户表中的 2 个字段,在每个票证请求中都需要,就是这样。我想我正在尝试衡量每个人的需求会自行分裂的点。如果使用这些关系有 0 个缺点,那么我绝对会专门使用它。 使用 Laravel 内置的关系没有缺点。如果它们看起来太麻烦,我向你保证,那只是因为你不熟悉它们。用户和工单之间的这种关系非常简单: - 用户有许多工单 - 工单属于一个用户 我在答案中添加了一个示例实现。 从技术上讲,您不需要在 User 类上实现反向关系,因为您是从 Ticket 对象查询的。 很好的例子,我想我可以明白为什么现在这似乎是一个不合理的问题,但我向你保证,你的答案正是我所追求的答案。没有缺点 = 我的默认选择

以上是关于在 laravel 中链接 2 个数据集的最有效方法的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 4.2 中保护视图的最有效方法是啥?

Laravel 更新记录 - 这是 2 个 MySQL 调用最有效的吗?

显示一对一关系的最有效方法是啥[Laravel]

检查具有数字和字符数据的 2 个数据帧之间差异的最有效方法?

在 R 中拆分大型数据集的有效方法

存储数千个中型文档的最有效的面向文档的数据库引擎是啥?