Laravel雄辩的关系vs数据库查询

时间:2020-09-18 07:28:42

标签: php laravel eloquent orm

我正在研究Laravel项目。我通常通过Eloquent ORM来获得数据库关系,例如belongsToMany或hasOne等。但是,当您从此类关系中获取数据时,它会运行额外的查询吗?两者之间是否存在性能差异?

$this->hasOne(Model::class)

Model::find($this->some_id)

?非常感谢。

1 个答案:

答案 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(); 进行测试