Laravel使用morpMany和where子句

时间:2017-03-06 06:08:21

标签: php laravel eloquent polymorphism

您好我在laravel框架中实现了多态关系 目前我有2个型号 CreditLog和用户

Creditlog具有可输出属性,可供用户模型

class CreditLog extends Model
{
...


    public function sourceable()
    {
        return $this->morphTo();
    }

...
}

然后在用户中我有这样的关系

class User extends Authenticatable
{

    public function creditLogs()
    {
        return $this->morphMany('App\Models\CreditLog', 'sourceable');
    }

}

然后在某些控制器中我需要获得用户信用记录

$user = User::find($id);
$CreditLogs = $user->creditLogs;

我可以在creditLogs方法中添加参数,我的意思是可以laravel morphMany添加这样的参数

$CreditLogs = $user->creditLogs
                        ->where('created_at', '>=', $inputReq['start'])
                        ->where('created_at', '<=', $inputReq['end']);

感谢您回答问题

1 个答案:

答案 0 :(得分:1)

您可以将load()方法与lazy eager loading一起使用。

  $user->load(['creditLogs' => function ($query) use($inputReq) {
        $query->where('created_at', '>=', $inputReq['start'])
                ->where('created_at', '<=', $$inputReq['end']);
    }]);

或使用with() methid与Constraing eager loading