我想知道在通过视图进行连接或获取模型本身时,是否存在最佳连接的分支。
这个电话也会这样:
$deposit = Class::where('request_type', 1)->where('id', $id)->with(['customer', 'currencyTable', 'bankList', 'customerBank']);
在性能和其他因素方面完全,如下所示:
return view('whatever.howEver.show', compact('oneVar', 'twoVar', 'etc'))->with(['customer', 'currencyTable', 'bankList', 'customerBank']);
如果在性能等方面等效,那么您将with()
放在哪里?
答案 0 :(得分:0)
第一个示例
$deposit = Class::where('request_type', 1)
->where('id', $id)->with(['customer', 'currencyTable', 'bankList', 'customerBank']);
您要查询Class
模型,并通过with()
要求它预加载Class
中定义的客户,currencyTable,...关系。
第二个示例
return view('whatever.howEver.show', compact('oneVar', 'twoVar', 'etc'))
->with(['customer', 'currencyTable', 'bankList', 'customerBank']);
这将返回给定的视图,并赋予视图对所列变量的访问权限,类似于您对compact
的用法。这一点都不完全相同,也不会询问我所知的关系。
为什么它们都起作用
Laravel有一种称为延迟加载的东西。即使您不像第一个示例中那样使用with()
,仍然可以使用关系,但是不同之处在于,仅在访问关系时才查询该关系,这意味着将执行多个查询(通常较慢)。 / p>