首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >laravel输出中的数据替换

laravel输出中的数据替换
EN

Stack Overflow用户
提问于 2017-03-27 10:40:08
回答 2查看 166关注 0票数 0

我用laravel设计了一个小数据库,有一个替换模型中的值的问题。

我的步骤如下。有两个有价值的基础,比如汽车品牌,还有一个是车主基础。相应地,第一基座具有如下形式

代码语言:javascript
复制
Id, description

7, bmw

9, audi

第二个

代码语言:javascript
复制
Id, ownername, brandid

1, John, 7

2, leo, 9

我替换了模板中的数据,给出了通过$owners ->$owners()方法获得的所有数组;如何正确地将品牌的id替换为其描述以获得2, leo, audi?谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-03-27 10:52:37

在所有者模型中创建关系

代码语言:javascript
复制
public function brand() {
    return $this->belongsTo(Brand::class, 'brandid');
}

然后,如果您获得其中的一个,则在模板中调用该关系

代码语言:javascript
复制
$owner = Owner::find(1);

//in template
{{ $owner->brand->description }} //echo 'bmw' because owner 1 has 'brandid' 7

如果你有很多所有者,你可以使用一个循环

代码语言:javascript
复制
$owners = Owner::get();

//in template 
@foreach($owners as $owner)
    {{ $owner->brand->description }}
@endforeach

然而,在foreach循环中,如果您有1000个用户,您将进行1000次查询。如果你只使用少量的用户,这是可以的。但对于大数据集,急切的加载所有者和品牌

代码语言:javascript
复制
$owners = Owner::with('brand')->get();

foreach保持不变,但只有2个查询,而不是1000个

票数 1
EN

Stack Overflow用户

发布于 2017-03-27 11:03:34

使用Eager Loading

首先,创建关系:

代码语言:javascript
复制
public function brand()
{
    return $this->belongsTo('App\Brand');
}

其次,指定被自动加载的关系:

代码语言:javascript
复制
$owners = App\Owner::with('brand')->get();

现在,您可以在刀片式服务器或其他地方使用结果:

代码语言:javascript
复制
foreach ($owners as $owner) {
    echo $owner->brand->description;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43037124

复制
相关文章

相似问题

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