如何在 Eloquent 中获得没有关系的模型?

How to never get Model without relationships in Eloquent?

我知道,我可以在 Laravel (9) 中使用 with()doesntHave() 根据它们之间的关系获取模型数据,但我从来不想获取模型数据没有关系,所以总是在所有CRUD函数中写with()函数很烦人。

有没有办法直接在模型中预先过滤没有关系的模型 class?

添加 protected $with = ['foo']; 将关系添加到每条记录,但仍包括没有关系的记录。

作为一个可选的奖励:也许绕过是很好的,所以通常所有的结果都会有关系,但也许对于一个特定的路径 GET /all_data 预选将被绕过。

如果按照此处所述将关系添加到模型的 $with 属性,则可以启用 eager loading by defaulthttps://laravel.com/docs/9.x/eloquent-relationships#eager-loading-by-default

文档内容如下:

Sometimes you might want to always load some relationships when retrieving a model. To accomplish this, you may define a $with property on the model:

=====编辑 1
另一种选择是使用 Global Scopes https://laravel.com/docs/9.x/eloquent#global-scopes。 你可以从这里开始,你可以添加更多逻辑来排除没有关系的模型。 =====编辑2
额外的逻辑将从文档中添加: https://laravel.com/docs/9.x/eloquent-relationships#querying-relationship-existence

protected static function boot(){
        parent::boot();
        static::addGlobalScope('relation', function($builder){
            $builder->has('relation')->with('relation');
        });
}