【发布时间】:2016-12-19 00:06:29
【问题描述】:
架构用户表
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
问题
如何从我的刀片中实现 select?我打算使用 @inject('DB','Illuminate\Support\Facades\DB') 所以我可以在我的刀片中使用 DB::raw,但是我对如何执行查询以实现 select 感到困惑 :(
【问题讨论】:
-
您在
Financial::class中的transaction()方法中有错字。您还应该遵守 Laravel 命名约定,并在User::class中使用小写的financials()。还有一点是你用错了关系,应该是User::class中的hasMany('App\Financial')。说到命名约定,transaction()可能不如user(),但这是你自己的选择。 -
虽然有可能,但是将应用程序逻辑添加到视图中是个坏主意。如果您要更改视图(模板、布局等),您还必须了解应用程序代码,这可能很麻烦。尝试将您的应用程序拆分为逻辑(控制器和服务)和表示(视图)。
标签: php laravel laravel-5 eloquent laravel-blade