php – 在Laravel中获得具有远关系的透视值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 在Laravel中获得具有远关系的透视值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1670字,纯文字阅读大概需要3分钟。
内容图文
在我的Laravel项目中,我使用了以下(inspired from here)来获得从模型到另一个模型的远程关系.我不能使用HasManyThrough方法,因为条和bazs与多态关系有关.
public class MyClass
{
public function foos()
{
return $this->hasMany('App\Foo');
}
public function getBazAttribute()
{
$this->load(['foos.bars.bazs' => function ($q) use (&$bazs) {
$bazs = $q->get()->unique();
}]);
}
}
这按预期工作,并返回与与MyClass对象相关的foos相关的条形相关的baz.我的问题是,我不知道如何使用它来轻松获取以下内容:
>每个巴兹所涉及的具体泡沫
>每个巴兹所涉及的foos总数
注意:返回的foos列表必须是baz与bar相关的foos
解决方法:
我会以一种方式回答这两个问题.
最简单的方法可能是加载渴望加载 – 但是以对立方式 – 加载$bazs集合:
$bazs->load('bars.foos');
并在baz的模型中定义了例如Accessor的方法:
public function getFoosAttribute()
{
$foos = \Illuminate\Database\Eloquent\Collection::make([]);
foreach ($this->bars as $bar) {
$foos->merge($bar->foos);
}
return $foos;
}
现在,当你将它们全部加载时你可以在那时进行迭代并使用某些foos集合的结果:
foreach ($bazs as $baz) {
// get all baz's foos way
$foosOfBaz = $baz->foos;
//when we have them all in collection we can easily count them
$foosOfBaz->count()
}
The list of foos returned must be the foos that the bazs are related
to the bar through
如果你想通过特定的栏获得与baz相关的foos你只能通过嵌套的for / foreach循环访问,因为关系级别(bazs和它的条形图)都在集合中:
$bazs->load('bars.foos');
foreach ($bazs as $baz) {
foreach ($baz->bars as $bar) {
//here You can access the foos collection
//that is from bar's that belongs to baz model's object
$bar->foos;
}
}
注意:如果玩具想要获得一个阵列你必须使用:$bar-> foos-> toArray()或使用 – > pluck(‘filed_name’,’key_name’) – > toArray()方法一个简单的清单
内容总结
以上是互联网集市为您收集整理的php – 在Laravel中获得具有远关系的透视值全部内容,希望文章能够帮你解决php – 在Laravel中获得具有远关系的透视值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。