架构用户表
ID|NAME
1 |John
2 |Doe
架构财务表
ID|USER_ID|PROFIT |DATE
1 |1 |1000 |2016-12-22
2 |2 |-2000 |2016-12-22
3 |1 |2000 |2016-12-24
4 |2 |-2000 |2016-12-24
用户型号
class User extends Model
{
public function Financial()
{
return $this->hasMany('App\Financial');
}
}
财务模型
class Financial extends Model
{
public function financial()
{
return $this->belongsTo('App\User');
}
}
我的控制器
class MyController extends Controller
{
public function index()
{
$user = User::get();
$financial = Financial::get();
return view('page.index',compact('user','financial'));
}
}
我的刀片
@foreach ($user as $u)
<tr>
<td>{{$u->id}}</td>
<td>
{{$u->financial->sum('gross')}}
{{-- Above code doesn't work --}}
{{-- Run something link --}}
{{select (sum(profit) as total) from financial where user_id = $u->id}}
</td>
</tr>
@endforeach
问题
如何从我的刀片中实现选择?我打算使用 @inject('DB','Illuminate \ Support \ Facades \ DB'),所以我可以在我的刀片中使用 DB :: raw ,但是我对如何执行查询以实现选择感到困惑:(
答案 0 :(得分:6)
使用Laravel Collection Method Pluck和Laravel Blade Service Injection解决。以下是我为完成归档所需的代码:
@inject('financial','App\Financial') {{-- inject before foreach --}}
@foreach ($user as $u)
<tr>
<td>{{$u->id}}</td>
<td>{{$financial->where('user_id','=',$u->id)->get()->pluck('profit')->sum()}}</td>
</tr>
@endforeach
评估发生的事情:
$financial->where('user_id','=',$u->id)->pluck('profit')->sum()
// get financial where user_id = $u->id // get the profit // sum the profit
<强>干杯!强>
答案 1 :(得分:3)
你可以简单地完成这个:
{{$u->financial()->sum('gross')}}
如果您正在对关系运行查询,请在调用时添加函数括号。