我试图根据当前查询的ID从另一个表中获取列的值,并将其应用于我的所有结果。
这些是我的关系:
Model" AttributeOption"
public function attributes()
{
return $this->hasMany('App\Attribute');
}
模型"属性"
public function attributeOptions()
{
return $this->belongsTo('App\AttributeOption');
}
我将结果集设为数组
$attributeResults = Attribute::whereIn('group_id', $attributes)->get()->toArray();
下面是查询结果的样本 -
0 => array:7 [▼
"id" => 13
"group_id" => 11
"label" => "Food item"
"type" => 1
"value" => null
"created_at" => "2018-04-08 20:49:26"
"updated_at" => "2018-04-08 20:49:26"
]
使用type
列我想使用该值查找关系。我试图运行测试dd($attributeResults[0]->option)
我可以对我的Eloquent查询做些什么来获取查询期间的关系值吗?当它不再是一个对象(在本例中是一个数组)时,我不明白如何查找关系。
更新数据库表
结果type = 1
我希望在attribute_options
表格中查找并找到在这种情况下匹配的ID' text'。
Attribute_options表
id : 1
option : text
属性表
id : 13
group_id : 11
label : food item
type : 1
value : null
答案 0 :(得分:1)
默认情况下,如果遵循命名约定,则在定义关系时不需要覆盖外键和本地键。如果您拥有AttributeOption
和Attribute
型号,并且关系为AttributeOption
有很多 Attribute
,那么外键是Attribute
是attribute_option_id
。在这种情况下,由于type
用作外键,因此关系应定义如下:
<强> AttributeOption.php 强>
public function attributes()
{
return $this->hasMany('App\Attribute', 'type');
}
<强> Attribute.php 强>
public function attributeOption()
{
return $this->belongsTo('App\AttributeOption', 'type');
}
要获取关系,请通过访问attributes
&#34;动态属性&#34;来检索AttributeOption
的{{1}}模型,例如:
attributes
AttributeOption::first()->attributes // collection of Attribute model
Attribute::first()-> attributeOption // AttributeOption model
可用于eager load关系:
with