Laravel 5模型与刀片查询的关系

时间:2016-08-12 04:45:41

标签: php laravel laravel-5 eloquent laravel-blade

架构用户

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 ,但是我对如何执行查询以实现选择感到困惑:(

2 个答案:

答案 0 :(得分:6)

使用Laravel Collection Method PluckLaravel 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')}}

如果您正在对关系运行查询,请在调用时添加函数括号。