今天我遇到了Laravel的问题。我想要做的就是获得每一个' stat' policy_type = higher_government的每条记录的价值。顺便说一句,我是不同的类型,但这只是其中之一。
$higherGovernment = Cache::remember('government.higher_government', 1, function() {
return GovernmentRole::where('government_type', 'higher_government')->first()->stats;
});
如何获取所有类型的所有统计信息而不是仅调用 - > first()?
我尝试删除 - > first()但除了给我这个错误之外它没有做任何事情:
Undefined property: Illuminate\Database\Eloquent\Builder::$stats
统计数据是一种关系:
public function stats(){
return $this->hasMany('App\Database\Website\User\Roleplay', 'government_id');
}
答案 0 :(得分:1)
试试这个
\应用\ YourModelName :: SELECT( '字段') - 化合物其中( '状态') - > GET();
答案 1 :(得分:0)
如果您只需要此表格中的一列,则可以使用select
功能指示您想要的列。
像这样:
<?php
$higherGovernment = Cache::remember('government.higher_government', 1, function() {
return GovernmentRole::where('government_type', 'higher_government')->select('stats')->get();
});
集合$higherGovernment
现在将包含GovernmentRole
个对象,其中包含一个参数stats
。
如果您希望这只是一个stats属性的数组,您可以使用集合来pluck
这个值。像这样:
<?php
$higherGovernment = Cache::remember('government.higher_government', 1, function() {
return GovernmentRole::where('government_type', 'higher_government')->select('stats')->get()->pluck('stats');
});
<强>更新强>
现在我们知道统计数据是一种关系,我认为最好的解决方案是加载所有GovernmentRole
个对象和eager load关系。然后,您可以显示每个GovernmentRole
的统计信息。
你可以这样做:
<?php
$higherGovernment = Cache::remember('government.higher_government', 1, function() {
return GovernmentRole::where('government_type', 'higher_government')->with('stats')->get();
});
// Just an example on how to get the stats
foreach ($g in $higherGovernment)
echo $g->stats->count();
答案 2 :(得分:-1)
你能做的就是在关系中做一个选择权,我想,就像这样:
public function stats(){
return $this->hasMany('App\Database\Website\User\Roleplay', 'government_id')->select('stats')->get();
}
在这种情况下,这将取消关系,但您将获得统计数据。另一种方法是直接从这种关系中获取统计数据:
GovernmentRole::where('government_type', 'higher_government')->first()->stats->select('stats')->get();
或者如果这给你一个错误,请尝试:
GovernmentRole::where('government_type', 'higher_government')->first()->stats()->select('stats')->get();