laravel - 单个查询中关系列的雄辩总和
问题描述
在这个查询中,我有三个表,例如radio
,radio_channels
其中radio_channels_files
我想计算一个列,该radio_channels_files
列作为新列进入表中duration_sum
,我下面的代码工作,但我无法计算这一列
class Radio extends Model
{
use SoftDeletes;
protected $guarded = ['id'];
protected $casts = [
'logo_path' => 'array',
'cover_path' => 'array'
];
public function category()
{
return $this->belongsTo(RadioCategory::class);
}
public function channels()
{
return $this->hasMany(RadioChannels::class);
}
}
class RadioChannelsFiles extends Model
{
protected $guarded = ['id'];
protected $casts = [
'image' => 'array',
//'keywords' => 'array',
];
public function channel()
{
return $this->belongsTo(RadioChannels::class,'playlist_id');
}
}
class RadioChannels extends Model
{
protected $guarded = ['id'];
protected $casts = [
'image' => 'array'
];
public function channel()
{
return $this->belongsTo(Radio::class);
}
public function files()
{
return $this->hasMany(RadioChannelsFiles::class , 'playlist_id');
}
public function duration_sum()
{
return $this->hasOne(RadioChannelsFiles::class ,'playlist_id')
->select('duration',
DB::raw('sum(duration)')
)->groupBy('duration');
}
}
$channels = Radio::with(['category', 'channels' => function ($query) {
$query->with(['files','duration_sum']);
}])->paginate(50);
我得到null
输出:
#relations: array:2 [▼
"files" => Illuminate\Database\Eloquent\Collection {#1422 ▶}
"duration_sum" => null //should return sum of duration from files
]
解决方案
我知道我怎么能得到它
public function getRadiosList(Request $request)
{
$radios = Radio::with(['category', 'playLists' => function ($query) {
$query->with(['files','duration_sum']);
}])->get();
return response()->json(['data' => $radios, 'statusCode' => 1], 200);
}
模型:
public function duration_sum()
{
return $this->hasOne(RadioPlaylistsFiles::class, 'playlist_id')
->select('playlist_id',
DB::raw('sum(duration) as `all_duration`')
)->groupBy('playlist_id');
}
推荐阅读
- ios - 具有不同 UITableViewCells 和动态内容的 UITableView
- angular - Angular 6更改单选按钮更改标签类
- elasticsearch - 在 Elasticsearch 中使用 ngram 时如何控制结果的评分或排序?
- c++ - C++ 11 中具有多个模板参数的模板函数的特化
- c++ - Using a shared library in another shared library
- javascript - 激活弹出窗口(HTML、PHP、Javascript/Jquery)
- html - 向锚添加底部边距是否有任何“陷阱”?
- javascript - 防止在控制台中编辑js
- python - “导入不和谐”在 Python 3.5 中不起作用
- python - 用于时间的 Python 库,对持续时间计算的小时数没有限制