PHP-Laravel以多种关系

时间:2018-04-05 18:58:47

标签: php laravel eloquent many-to-many pivot-table

我在从数据透视表中获取特定数据时面临问题(很多关系)。场景是我想在两个特定日期之间从数据透视表中获取数据。当我使用这段代码时

$user_availability = $user->dates->where('date','>=' , $start_date)->where('date','<=' , $end_date)->get();

        foreach ($user_availability as $date)
        {
            echo $date->pivot->afternoon;
        }

它给了我以下错误

  

类型错误:函数Illuminate \ Support \ Collection :: get()的参数太少,在第210行的C:\ xampp \ htdocs \ codehacking \ app \ Http \ Controllers \ UsersController.php中传递的0和至少1预期

用户模型:

public function dates()
{
    return $this->belongsToMany('App\Date')->withPivot('morning', 'afternoon','night','comment');
}

数据透视表

enter image description here

如果您需要,我可以提供更多信息。任何帮助将不胜感激。
谢谢!

1 个答案:

答案 0 :(得分:1)

来自Laravel documentation

查询关系

  

由于所有类型的Eloquent关系都是通过方法定义的,所以   可以调用这些方法来获取关系的实例   没有实际执行关系查询。

关系方法动态属性

  

如果您不需要为Eloquent添加其他约束   关系查询,您可以访问该关系,就像它是一个   属性。

将查询更改为

$user_availability = $user->dates()->where('date','>=' , $start_date)->where('date','<=' , $end_date)->get();
parenthesis关系中使用

dates来查询关系。