我对Laravel并不陌生,过去大部分时间都集中在Codeigniter上,因为这是我工作的大部分时间。
我目前正在建立客户的网站,并且还在建立自定义CMS(针对客户的经验和特殊需求)。
目前,我正在努力弄清楚如何处理Laravel / Eloquent中的关系,例如,我有一个products
表。每个产品可以有一个type
。我将这些类型存储在一个单独的表中,以便将来在内容开始构建时可以更好地控制它们。我需要的是一个查询以获取所有具有相关类型的产品。在其他框架中,我可以简单地使用查询生成器来定义列和联接,但是由于Eloquent的工作方式,我正在努力寻找实现此目的的方法!
就上下文而言,在CMS中,将有一个product数据表,该表将显示系统中的所有产品,其中一列将为type
,但是我想显示其名称。类型,而不是id
。
可能我很愚蠢,请随时指出一些明显的内容!
答案 0 :(得分:0)
您可以搜索 with()
函数,它在此方面很有用:
在您的示例中,您需要将product
模型与type
模型相关联,以便在产品中添加
`public function type()
{
return $this->hasOne(Type::class);
}`
并在类型中添加
public function Product()
{
return $this->belongsTo(Product::class);
}
,您的查询将是
$result=Product::with("type")->get();
这将返回相关类型行,每个相关产品行为 this example get user with profile
,您可以从
获取每个产品行的类型名称foreach($result as $res){
$type_name=$res->type->name;
}
答案 1 :(得分:0)
您要查找的是“急切加载”,它位于文档中:https://laravel.com/docs/5.8/eloquent-relationships#eager-loading
在网站上的示例中,您可以将其“书”替换为“产品”,然后将其“作者”替换为“类型”,您将实现您想要的目标。
如果要在视图中加载关系,即使用Blade,则需要执行以下操作:
@foreach($products as $product)
<div> {{ $product->type->name }} </div>
@endforeach