首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以单个数组或对象的形式检索模型及其关系|雄辩,雄辩:关系

如何以单个数组或对象的形式检索模型及其关系|雄辩,雄辩:关系
EN

Stack Overflow用户
提问于 2019-11-29 16:38:47
回答 2查看 71关注 0票数 0

我有3个一对一关系的表。phone表与Model表具有一对一关系,Model表与Manufacturer表具有一对一关系。

代码语言:javascript
复制
phone_table
    id
    imei
    image
    model_id

model_table
    id
    name
    image
    manufracturer_id

manufracturer_table
    id
    name
    logo

如何获得这样的结果:-

代码语言:javascript
复制
App\Phone{
    imei : "356554512522148",
    model : "Galaxy S-10",
    manufracturer : "Samsung",
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-29 16:47:31

我永远不会把它抛到同一个数组/对象中,我会首先在转换时这样做。如果您使用默认的Laravel转换,则可以对其使用getter。关于如何将这些字段访问到同一上下文中的简单示例如下。

代码语言:javascript
复制
$phone = Phone::with('model.manufactor')->find(1);

有了secures,查询对于访问它是最好的。如何将数据放入同一层。

代码语言:javascript
复制
[
    'imei' => $phone->imei,
    'model' => $phone->model->name,
    'manufactor' => $phone->model->manufactor->name,
]

要实现这一点,您还需要在模型中使用关系。

Phone.php

代码语言:javascript
复制
public function model()
{
    return $this->belongsTo(Model::class);
}

Model.php

代码语言:javascript
复制
public function manufactor()
{
    return $this->belongsTo(Manufactor::class);
}
票数 1
EN

Stack Overflow用户

发布于 2019-11-29 16:47:11

加入他们吧:

代码语言:javascript
复制
\App\Phone::leftjoin('model_table AS mo', 'mo.id', '=','phone_table.model_id')
          ->leftjoin('manufracturer_table AS ma', 'ma.id', '='. 'mo.manufracturer_id')
          ->selectRaw('phone_table.imei, mo.name AS model, ma.name AS manufracturer')
          ->first()

有时,您需要考虑为什么要将表拆分为一对一关系。

是否存在通常不使用的表,或者其中一个表需要由另一个表连接。这仅仅是为了节省空间还是降低IO成本。

如果没有任何其他原因,您总是需要获取这些表的信息,也许您可以合并为一个表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59101370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档