今天,我面临着Laravel的一个问题。我想要做的是为government_type = higher_government的每个记录获取每个'stat‘值。顺便说一下,我是不同类型的,但这只是众多类型中的一种。
$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顺便说一句,stats是一种关系:
public function stats(){
return $this->hasMany('App\Database\Website\User\Roleplay', 'government_id');
}发布于 2017-01-04 18:19:14
尝尝这个
\App\YourModelName::select('fields')->where('condition')->get();发布于 2017-01-04 16:35:23
如果您只想要此表中的一列,则可以使用select函数来指明您想要的列。
如下所示:
<?php
$higherGovernment = Cache::remember('government.higher_government', 1, function() {
return GovernmentRole::where('government_type', 'higher_government')->select('stats')->get();
});集合$higherGovernment现在将包含带有一个参数stats的GovernmentRole对象。
如果您希望它是一个仅包含stats属性的数组,您可以使用集合将这个值从其中pluck出来。如下所示:
<?php
$higherGovernment = Cache::remember('government.higher_government', 1, function() {
return GovernmentRole::where('government_type', 'higher_government')->select('stats')->get()->pluck('stats');
});更新:
既然我们知道eager load是一个关系,我认为最好的解决方案就是加载所有的stats对象并对这个关系执行统计操作。然后,您可以显示每个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();发布于 2017-01-04 16:45:58
你可以做的是在关系中做一个选择,我想,就像这样:
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();https://stackoverflow.com/questions/41459252
复制相似问题