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

时间:2018-01-31 13:50:08

标签: php laravel laravel-5.5

我有一个关系,可以在特定日期创建使用静态日期参数

的朋友
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);
}

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

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

  

请求 函数返回当前请求实例或获取输入项

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);
}

答案 1 :(得分:1)

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

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();

答案 2 :(得分:0)

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

public function data(){

    Mdalname::friend($value)
}

以模态

public function friends($value )
{

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