我在从数据透视表中获取特定数据时面临问题(很多关系)。场景是我想在两个特定日期之间从数据透视表中获取数据。当我使用这段代码时
$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');
}
数据透视表
如果您需要,我可以提供更多信息。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:1)
来自Laravel documentation。
查询关系
由于所有类型的Eloquent关系都是通过方法定义的,所以 可以调用这些方法来获取关系的实例 没有实际执行关系查询。
关系方法动态属性
如果您不需要为Eloquent添加其他约束 关系查询,您可以访问该关系,就像它是一个 属性。
将查询更改为
$user_availability = $user->dates()->where('date','>=' , $start_date)->where('date','<=' , $end_date)->get();
在parenthesis
关系中使用 dates
来查询关系。