【发布时间】:2017-02-01 00:27:25
【问题描述】:
作为一个使用 laravel 几个月的用户,我正在努力更好地了解 Eloquent 的高级用法。
我遇到了一个案例,我无法想出一个感觉正确的解决方案。
我有以下结构(简化)
Mandate
id
status_id
Mandate_user
mandat_id
user_id
link_status
User
id
我通过数据透视表在 User 和 Mandat 中声明了 belongsToMany。
关于用户:
public function mandates(){
return belongsToMany(..)->withPivot('link_status');
}
我可以通过使用为用户获得接受的授权
public function acceptedMandates(){
return $this->mandates()->wherePivot('link_status', MandateUserStatus::Accepted);
}
这可行,但我想知道是否有更好的方法通过使用范围或其他雄辩的方法。 而且我正在尝试接受 status_id 低于 4 的任务(也来自枚举)
我想到了类似的东西:
public function runningMandates(){
return $this->acceptedMandates()->where('status_id','<', 4);
}
然后像这样收集任务:
$mandates = User::find(1)->runningMandates();
但是,雄辩的方式会是这样的:
$mandates = User::find(1)->mandates()->running()->accepted();
感谢您的宝贵时间。
【问题讨论】:
标签: database laravel laravel-5 eloquent laravel-5.2