渴望加载模型使用但给它另一个名字 - Laravel 5.2

问题描述 投票:6回答:2

是否可以使用with方法使用预先加载但是给它另一个名字?就像是:

->with('documents as product', 'documents.documents as categories')

我有一个文档表,可以是产品或类别,渴望加载工作,但不是那么友好,只通过文档名称而不是它真正的文件名来检索文档。

php laravel laravel-5.2
2个回答
0
投票

急切加载告诉“加载此关系数据”,接下来您可以访问subject-> relation而无需进一步查询

如果你想重命名关系,也许你应该重新命名模型中的关系,而不是在急切的加载中

你也可以通过添加虚拟属性来绕过这个:

function getProductAttribute(){
    return $this->document;
}

在原始文件上留下急切的装载

导致产品属性与文档相同:

$subject->product === $subject->document

0
投票

我问自己同样的问题,因为我没有在网上找到满意的答案,这就是我的所作所为。我有:

$o->load('X');

但我希望$o对象具有Y属性与X关系的值。由于我已经为Y定义了$o关系,我无法将X重命名为Y并完成工作。所以我做了

$o['Y'] = $o->X();

我知道这不是最好的解决方案,但它适用于我的情况:)

注意:load and with produce exactly the same number of sql queries - 你需要选择一个更适合你情况的那个。

© www.soinside.com 2019 - 2024. All rights reserved.