Laravel 5.5 如何在关系中添加动态条件?

Laravel 5.5 How to add dynamic conditions inside a relationship?

我有一个关系来获取在特定日期创建的朋友,它使用静态日期参数

public function friends()
{
    return $this->hasMany(Friend::class)->where('created_at','2018-01-31');
}

但是我需要为动态日期获取它,其中 $request 变量在关系中不可用。我试过这样不行

public function friends($request)
{
    return $this->hasMany(Friend::class)->where('created_at',$request->date);
}

我该如何解决这个问题?

您可以使用 Laravel 辅助函数 request()

The request function returns the current request instance or obtains an input item

public function friends()
{
    $date = request('date') ? : '2018-01-31'; // You can choose a default date, here '2018-01-31'

    return $this->hasMany(Friend::class)->where('created_at', $date);
}

你可以在控制器中做这样的事情

public function data(){

    Mdalname::friend($value)
}

并在模态中

public function friends($value )
{

    return $this->hasMany(Friend::class)->where('created_at', $value);
}

模型将与您发布的模型保持一致:

public function friends($date)
{
    return $this->hasMany(Friend::class)->where('created_at', $date);
}

在您的控制器中(示例):

$fooFriends = $foo->friends('2018-01-30')->get();

//Directly from $request or you can use different values/vars each time
$fooFriends = $foo->friends($request->date)->get();