【问题标题】:PHP-Laravel get data from pivot table in manytomany relationPHP-Laravel以多对多关系从数据透视表中获取数据
【发布时间】:2018-09-15 16:52:22
【问题描述】:

我在从数据透视表(多对多关系)中获取特定数据时遇到问题。场景是我想从两个特定日期之间的数据透视表中获取数据。当我使用此代码时

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

数据透视表

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

【问题讨论】:

  • 尝试更新到$user_availability = $user-&gt;dates()-&gt;where('date','&gt;=' , $start_date)-&gt;where('date','&lt;=' , $end_date)-&gt;get();
  • @ab_ab 出乎意料地有效!
  • () 让人惊喜..
  • 非常感谢!您可以发布答案
  • 我使用first() 方法获取了没有() 的单个结果。

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


【解决方案1】:

来自 Laravel documentation

查询关系

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

关系方法与。动态属性

如果你不需要为 Eloquent 添加额外的约束 关系查询,您可以像访问关系一样访问关系 属性。

将查询更改为

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

parenthesis在关系dates中用于查询关系。

【讨论】:

    猜你喜欢
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多