我正在研究Laravel项目。我通常通过Eloquent ORM来获得数据库关系,例如belongsToMany或hasOne等。但是,当您从此类关系中获取数据时,它会运行额外的查询吗?两者之间是否存在性能差异?
$this->hasOne(Model::class)
和
Model::find($this->some_id)
?非常感谢。
答案 0 :(得分:0)
我给你举个例子。希望对您有所帮助。
我有2个型号:
在模型中:
public $fillable = [
'id',
...
];
public function b()
{
return $this->hasOne(B::class, 'a_id', 'id');
}
在B模式中:
public $fillable = [
'id',
'a_id',
...
];
public function a()
{
return $this->belongsTo(A::class, 'a_id', 'id');
}
然后您可以获取类似的数据:
$a = A::find($id);
$b = B::find($a->b->id);
echo $a->attributeOfA;
echo $b->attributeOfB;
echo $a->b->attributeOfB;
echo $b->a->attributeOfA;
使用 Laravel调试栏或 dd(); 进行测试