私のプロジェクトには、次のようなクラスで構成された熱心な関係を持つ多くのEloquentモデルがあります。
protected $with = [ 'countries', 'roles' ];
しかし、関係のない古いプレーンモデルだけが必要になることもあります。どういうわけか私はできますか:
Model::noRelations()->all()
クエリビルダーを使用したり、数回だけ別のクラスを作成したりする必要はありません。
モデルを空のままにするのではなく、モデルに$with
プロパティを設定する必要がある場合は、次のように、熱心にロードする必要のある関係を手動でオーバーライドできます。
Model::setEagerLoads([])->get();
トーマスキムに加えて答えます。
とにかくEloquent\Modelクラスを拡張し、モデルから関係を取り除く必要がある場合は、このソリューションが適している可能性があります。
デフォルトのモデルクラスでスコープを作成します。
public function scopeNoEagerLoads($query){
return $query->setEagerLoads([]);
}
そのクラスを拡張するORMの場合、次のことができるようになります。
User::noEagerLoads()->all()
issues sayのように
Model::without(['countries', 'roles' ])->all();