Laravel Eloquent 关系 - 不是基于条件获取

Laravel Eloquent Relationship - not fetching based on condition

我想从 User table 中获取所有 id & name 满足条件 order_userId of Orders [= User table 的 37=] == idOrders table 的 order & uploadId 列的值为 falsenull 分别。如果数据来自 User table,则下面的代码 returns 所有行都没有检查我指定的 where 条件。我该如何解决这个问题?

$data = User::with(['orders'=>function ($query){
            $query->where('order', false);
            $query->whereNull('uploadId');
        }])->pluck('name', 'id');

用户模型

public function orders()
{
    return $this->belongsTo(Orders::class, 'order_userId', 'id');
}

以上代码输出如下:

    {
        "id": 2,
        "name": "jen",
        "orders": null
    },
    {
        "id": 3,
        "name": "jos",
        "orders": null
    }

试试这个解决方案:

正确的关系是,用户有很多订单

用户模型:

public function orders()
{
    return $this->hasMany(Orders::class, 'order_userId', 'id');
}

尝试

$data = User::whereHas('orders', function ($query) {
    $query->where('order', false);
    $query->whereNull('uploadId');
})->pluck('name', 'id');

也检查这个..

$data = User::whereHas('orders', function ($query) {
    $query->where([['order', false],['uploadId','>',0]]);
})->pluck('name', 'id');