Laravel模型属于当前用户和全局用户

Laravel model belongs to current user and global user

我有以下 collections:

用户

{
    "id": 1,
    "name": "Bob"
},
{
    "id": 2,
    "name": "Mary"
}

东西

{
    "id": 1,
    "user_id": 1,
    "name": "Bob's stuff"
},
{
    "id": 2,
    "user_id": 2,
    "name": "Mary's stuff"
},
{
    "id": 3,
    "user_id": 0,
    "name": "Everyone's stuff"
},
{
    "id": 4,
    "user_id": null,
    "name": "Global stuff"
}

...以及以下型号:

class User extends Eloquent {
    public function stuff() {
        return $this -> hasMany( 'Stuff' ) ;
    }
}
class Stuff extends Eloquent {
    public function user() {
        return $this -> belongsTo( 'User' ) ;
    }
}

如何自动将所有人的东西(User.id == 0)和全局的东西(User.id == null)添加到所有人的模型中?换句话说,如果我正在查询 Bob 的东西,我希望得到以下信息:

{
    "id": 1,
    "user_id": 1,
    "name": "Bob's stuff"
},
{
    "id": 3,
    "user_id": 0,
    "name": "Everyone's stuff"
},
{
    "id": 4,
    "user_id": null,
    "name": "Global stuff"
}

你可以使用这个:

public function stuff() {
    return $this->hasMany(Stuff::class)->orWhere('user_id', 0)->orWhereNull('user_id');
}

缺点是不能只添加其他 WHERE 子句:

$user->stuff()->where('foo', 'bar')->get(); // Doesn't work as expected.

因此,预加载不起作用。